为什么包含内容的div有自动保证金?

时间:2016-12-17 18:54:07

标签: html css

我想知道当margin中有内容(段落等)时,为什么<div>似乎存在?

.container {
  width: 300px;
  height: 150px;
  background-color: #ccc;
}
.container2 {
  width: 300px;
  height: 150px;
  background-color: #000;
}
<div class="container">
  <p>Text</p>
</div>

<div class="container2">
  <p>Text</p>
</div>

在上面的示例中,两个<div>之间存在差距,但如果我取出该段落,margin就会消失。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

由于某些HTML标记具有默认边距,因此包含<p>,并且它会折叠。通常的方法是使用CSS reset来设置网站完全,以便他们看起来。

答案 1 :(得分:-1)

您可以通过在CSS中执行类似的操作来删除所有元素的所有边距,并使用*定位所有元素:

*{margin:0px;} 

这可能有点极端,你最好找到一个经过验证的CSS重置模板。我很幸运使用了几年前在网上找到的那个。他们做了这样的基本重置(有选择地删除他们想要的任何元素:

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font-family:Verdana, Arial, Helvetica, sans-serif;
    vertical-align: baseline;
}

请记住,如果您使用这些方法中的任何一种方法,您将不得不放回您想要的大量边距,但它会删除您想要定位的边距。

希望它有所帮助!