Twitter bootstrap 为什么引导在.span上使用浮动而不是显示:内联块?

Twitter bootstrap 为什么引导在.span上使用浮动而不是显示:内联块?,twitter-bootstrap,grid,css-float,css,Twitter Bootstrap,Grid,Css Float,Css,我正在修补自定义的网格,想看看其他人是如何创建他们的网格系统的。由于推特的引导程序似乎非常受欢迎,所以我查看了它的代码。现在我想知道他们为什么使用浮动?我会使用display:inline blockhtml元素具有显示:内联或显示:块我会尽量避免浮动。但出于某种原因,引导程序创建者决定使用浮动。首先,我认为他们使用它们具有向后兼容性,因为ie6不支持display:inline块和ie7仅在具有显示:内联的元素上支持它默认情况下。但是ie6或多或少地退出了游戏,因为他们使用的是*zoom:1;

我正在修补自定义的网格,想看看其他人是如何创建他们的网格系统的。由于推特的引导程序似乎非常受欢迎,所以我查看了它的代码。现在我想知道他们为什么使用浮动?我会使用
display:inline blockhtml元素具有
显示:内联或<代码>显示:块我会尽量避免浮动。但出于某种原因,引导程序创建者决定使用浮动。首先,我认为他们使用它们具有向后兼容性,因为ie6不支持
display:inline块和ie7仅在具有
显示:内联的元素上支持它默认情况下。但是ie6或多或少地退出了游戏,因为他们使用的是*zoom:1;为了瞄准ie6+IMO,他们可以复制相同的
显示:内联块
*显示:内联*缩放:1那么最后一个问题为什么在显示内联块上浮动?是否有我上面没有提到的问题,他们试图解决

在语义网的术语中,当我们想在文本的行内放置块级元素时,应该使用
显示:内联块
。我们不应该使用内联布局来制作页面主布局。具有
display:inline block
的元素也会从父元素的
font size
line height
等属性生效。这将降低页面布局的准确性。
在进行页面主布局时,您最好养成使用
float
而不是
inline block
的习惯。

inline block可识别空白,具有实际内容的自动宽度,并按HTML中的顺序堆叠。浮动不是但需要clearfix方法,并且基于块元素。这些元素在可用空间的水平方向上具有自动宽度。纯粹从语义上讲,内联块的语义较低,因为它支持空格感知格式和顺序的重要性。但从功能的角度来看,两者都不是为网格而设计的。如果不是伪CSS,我们也会有非语义HTML标记clearfixe。所以在我看来,他们都不是赢家。但是,当flexbox在未来几年成为强制性产品时,目前没有其他选择

对于内联块:

<div>
    <div style="display:inline-block; width:30%;">col1
    </div><div style="display:inline-block; width:70%;">col2</div>
</div>

列a是正常的父列。列c是b的子嵌套列。除非使用填充和边框框模型,否则很难将c与a与相对大小对齐,因为檐槽对于容器是可变的。但是那样你就失去了很多灵活性。当您希望col有一些背景和填充时,您将弄乱网格系统,因此您必须使用您设计的容器,这将使代码混乱。我还没有研究他们是否找到了解决办法。我还没有。我选择了固定像素,但这意味着在响应式设计中,你只能有几个固定宽度,移动设备周围的一切都使用相对网格。

我更喜欢使用
显示:内联块的网格系统而不是浮动,例如(以前的Yahoo YUI Grid),因为它们国际化而没有额外的样式;将文本方向更改为从右向左,布局将自动反转;花车不会这样做。浮动还引入了清除和其他跨浏览器异常的需要。任何
内联块
可能超过
浮点
的不准确都可以纠正,如Pure所示。对于
显示的批评:内联块不用于布局,可能是使用
显示:表格也应禁止跨浏览器居中。我还想问语义网这个术语是否真的适用于CSS,因为这个术语主要涉及HTML,并使用其元素和属性来传递机器可读的含义;CSS的全部目的是尽可能彻底地设计语义HTML,因此,CSS Zen Garden等经典网站应运而生

我说,只要该技术没有利用漏洞,没有阻碍用户和设备的内容,并且得到充分支持,那么它是可以接受的。我们没有理由不能以非正统的方式使用CSS,而是以支持的方式使用CSS,就像Stu Nicholls的CSSPlay一样


有趣的是,它还集成到纯网格中,这是一个与现代浏览器兼容的高级布局系统(≥谢谢你的回答,但你的意思是img是内联元素,p是块级元素,反之亦然,不是吗?:)实际上,
img
p
都是块级元素。我更正了答案。对不起,我的错误不是内联级元素,也不是块级元素。默认情况下,img标记是内联块。您可以像按块级元素一样定义宽度和高度,但它也可以与同一行上的其他元素内联流动,而不会浮动。“具有display:inline块的元素也会从父元素的字体大小和行高等属性中生效。”-除非被重写,否则元素始终会从父元素“生效”。。我使用内联块进行布局已经两年了,没有任何问题。如果有条件地将IE7的内联块设置为内联,IE7将呈现内联块。它基本上消除了对.clearfix的需要。我还没有发现使用它的任何缺点!就语义网而言,像
inline block
float
这样的CSS不会影响语义。回答得好!正如我第一次问的,我不知道内联块级元素对空格的敏感度,就像你们一样,我更喜欢使用内联块而不是浮点。我也喜欢flexbox的想法,但我认为我们还没有做到这一点,尽管webkit开发人员做得很好,但浏览器供应商会花时间正确地实现它……是的,确切地说,从IE8开始可能需要几年时间
<div class="clearfix">
    <div style="float:left; width:30%;">col1</div>
    <div style="float:left; width:70%;">col2</div>
</div>
----  --a-  ----  ----
---b------
....  ..c.