【发布时间】:2014-05-13 06:43:12
【问题描述】:
这是以下问题的延续:
CSS Float - The content stays in the default stack position
当我在 box1 中添加块元素(p 元素)时(在浮动 box0 之后),p 元素按预期包装。但是,它不是从容器的边缘开始的。请看图片。
此外,当我将 display: inline-block 或 float:left 或 overflow:hidden 添加到段落元素时,行为会有所不同。有人可以解释这些场景吗?
http://jsfiddle.net/jintoppy/xGm5E/3/
<div class="box0">Box 0</div>
<div class="box1">Box1 should wrap with text elements.
<p>But, what about block elements? Why it is behaving like this</p>
</div>
.box0 {
width: 100px;
height: 100px;
background-color: green;
float: left;
opacity: .5;
}
.box1 {
width: 200px;
height: 100px;
background-color: red;
}
p {
border: 1px solid #000;
}
【问题讨论】:
-
您必须在 CSS 中手动将边距和内边距设置为零,因为默认情况下所有浏览器都会为元素添加一些内边距(大多数情况下约为 4px)
-
只是一个不幸的行高:jsfiddle.net/xGm5E/4 或以背景颜色显示,元素在那里:jsfiddle.net/xGm5E/5
-
p 元素具有默认填充。我同意这一点。但是,这并不能解释为什么它不是从 div 之后的左端开始。请查看屏幕截图中突出显示的部分。
-
@jintoppy 因为行高,在给定的行高下,这些字母没有空间向左移动。你可以改变行高,添加填充,改变溢出,很多方法去罗马
-
@caramba:感谢您的解释。