对显示感到困惑:内联和浮动:左

时间:2013-04-16 11:08:07

标签: html css

假设我有两个要素:

<span class="b">This is inline element</span>
<div class="a"></div>

.a {
   width:100px;
   height:100px;
   background: red;
   float: left;
}

span元素位于float元素之后:demo

但我认为内联元素在标准流程中,所以它的位置不应该 受浮子元件影响?为什么会这样?

2 个答案:

答案 0 :(得分:2)

spec may clear this up for you

  

在块格式化上下文中,每个框的左外边缘触及包含块的左边缘(从右到左格式化,右边缘触摸)。即使存在浮点数也是如此...除非该框建立了新的块格式化上下文

至于内联元素

  

通常,线框的左边缘接触其包含块的左边缘,右边缘接触其包含块的右边缘。但是,浮动框可能位于包含块边缘和线框边缘之间。因此,虽然相同内联格式化上下文中的线框通常具有相同的宽度(包含块的宽度),但如果由于浮动可用的水平空间减少,它们的宽度可能会有所不同

also a section devoted to "next to floats."

本质上,块级元素创建一个新的块上下文,将浮动向下推到下一行。 inline元素不会创建新的块上下文,因此float可以存在于同一行上。请注意,只有两个元素都有空间时才会出现这种情况:http://jsfiddle.net/YVW6Y/3/

答案 1 :(得分:0)

内联格式是文本通常获得的内容。非正式地说,这意味着事情被填充成一条线。

浮动是一个在当前行上向左或向右移动的框。浮子最有趣的特征是内容可能沿着它的侧面流动。

所以float是一种第三类格式化模型。它涉及内联作为非正式的布局模型。