我在编写网站时遇到了一个我无法理解的问题。为什么css float会将子元素的填充添加到父元素?
我有两列,使用浮动:左(和保证金:0填充:0) 里面的列是块
当块是空的有没有问题,我甚至可以将文本添加到它,而无需使用<p>
标签。 但是,当我在块中添加<p>
标记时,父项列会添加一些填充。
当我不使用float:left
(所以只有一列),但我可以使用块内的<p>
标记没有填充添加到父元素。
当然,我可以想出一些解决办法,但我也想明白为什么会发生这种情况,如果有人知道如何恢复事情的奇怪行为。
我有一个活的问题演示here。
<style>
#html, body{
margin: 0;
padding: 0;
height: 100%;
font-size: 100%;
}
#pagewrap {
padding: 0 20px;
width: 960px;
height: 100%;
margin: 0 auto;
background: #CCC;
}
.test {
width: 100%;
height: 100px;
margin: 0;
padding: 0;
background: #00F;
clear: both;
}
.column {
width: 480px;
margin: 0;
padding: 0;
float: left;
background: #0F0;
}
.column2 {
width: 480px;
margin: 0;
padding: 0;
background: #0F0;
}
.lefty {
min-height: 100px;
width: 470px;
margin: 0 10px 10px 0;
padding: 0;
background: #999;
}
.righty {
min-height: 130px;
width: 470px;
margin: 0 0 10px 10px;
padding: 0;
background: #999;
}
</style>
<div id="pagewrap">
<div class="test"></div>
<div class="column">
<div class="lefty">
<p></p>
</div>
<div class="lefty">
<p></p>
</div>
</div>
<div class="column">
<div class="righty">
</div>
<div class="righty">
</div>
</div>
<div class="test"></div>
<div class="column2">
<div class="lefty">
</div>
<div class="lefty">
</div>
</div>
<div class="test"></div>
<div class="column2">
<div class="lefty">
<p></p>
</div>
<div class="lefty">
<p></p>
</div>
</div>
<div class="test"></div>
</div>
的p标签必须引起间隙 – Xaver
没有像样的CSS重置填充,所有元素有一个默认的填充和保证金。 – Mark