`
caiceclb
  • 浏览: 239357 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

认知:IE6、IE7支持但不完全支持display:inline-block属性

阅读更多

发布一个小时后,总感觉不安,查询了一些资料,决定修改本篇。

 

原文标题是:认知:IE6、IE7的确不识别display:inline-block属性,内容如下:

-------------------------------------自制分割线-----------------------------------------

 

虽然布局中经常用到display:inline-block,ie6,ie7也确实表现的跟“真”的一样,但是这 哥俩 确实是不识inline-block为何物的。。。

 

因为我曾经试着对div设置display:inline-block;来布局,FF没有问题,但是ie6不行依然将div解析为block,当时偶觉得是ie的bug。

 

今天在群里偶然被提起了,一位童鞋提供了一个网址,看了以后深表认同,看到此文的第一句

 

vapour 写道
在IE6、IE7中不识别display:inline-block属性,但使用inline-block属性在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症。

 

立马就想到了之前div inline-block的尝试,无需犹豫了。

 

此文写的很清楚了,偶就无需多说,贴上链接,有研究的可以详细参看:

 

http://www.dovapour.com.cn/article/20090611175.html

 

 

-------------------------------------自制分割线-----------------------------------------

 

每个人都有自己的一些认知,建立在当前的基础之上,但是认知可以有进步。

 

对于这样的原文,感觉不安,于是还是多查点资料确认的好,否则误人误己。

 

苏昱(Rainer Su)出品的CSS手册,display一节有云:

 

写道
在IE5.5中开始支持 inline-block 。你可以使用 inline-block 使对象获得布局而无需指定确切的高( height )和宽( width )。
在IE6.0中开始支持 list-item 。

 

这样说就是 IE5.5就支持inline-block了,IE6/7当然也支持,但是如何解释  块级元素无法呈现inline-block的效果呢?继续找资料。

 

找了几篇外国资料,取一个有代表性的:

 

http://www.quirksmode.org/css/display.html

 

截图:

 

 

 

 

IE6/7对于inline-block的支持处于不完全状态: 

写道
In IE 6 and 7 inline-block works only on elements that have a natural display: inline.
 意思是说,IE6/7的inline-block属性只对原生默认的内联元素(span, a, em......)有效,对于块级元素(div,p,ul......)无效。

 

 另外一个参考:http://homepage.ntlworld.com/spartanicus/ie_block_level_element_inline-block_hack.htm

 

写道
IE doesn't apply the value inline-block for the CSS display property on HTML elements that default to block level.

 

那么现在有两个结论:

 

1、IE6/7不识别inline-block,只是触发了layout,表现跟真实一样。

2、IE6/7不完全支持inline-block,只对内联元素有效。

 

两者,我更倾向于第二个结论。如果你有更好的证据,请讨论。

 

不断纠正认知!

  • 大小: 31.7 KB
分享到:
评论
5 楼 caiceclb 2010-04-27  
caiceclb 写道
http://msdn.microsoft.com/en-us/library/ms533776(VS.85).aspx

点错了,直接就发了出去。。。

找到了官方的说法,应该算是最正宗的了吧。。

The following table shows Cascading Style Sheets (CSS) properties and corresponding values that, if set, cause an element to have layout.

以下属性一旦设置,将触发元素的layout:

CSS property Value
display         inline-block
height         any value
float         left or right
position absolute
width         any value
-ms-writing-mode tb-rl
zoom         any value

4 楼 caiceclb 2010-04-27  
http://msdn.microsoft.com/en-us/library/ms533776(VS.85).aspx
3 楼 caiceclb 2010-04-27  
或许表述改一下,IE认识display:inline-block;但是只作为触发layout用。。。。。。
2 楼 caiceclb 2010-04-27  
IE是个杯具的流行产物。对IE6这种应该被淘汰的东东还是不过多研究原因了,结果正确就行。一个清除浮动的例子,IE6可以用zoom:1;来清除浮动,同样display:inline-block;也是可以清除自身浮动的,喜剧的是发现FF3.5.7,Opera10.10也可以用这个来清除自身浮动,脑中没有之前哪位大牛对此做发表的记忆。

<div style="display:inline-block;border:1px solid red;">
	<p style="float:left;width:200px;height:200px;">外部div有1px的边框,这个段落p向左浮动</p>
</div>
1 楼 s79 2010-04-25  
第1条是正确的。

IE6以前的版本(也包括IE6及以后所有版本的混杂模式,其实这种混杂模式在渲染方面就相当于IE5.5),通过设置任何元素的width/height都可以使其hasLayout。但在IE6/IE7的标准模式中的行内元素上却不行,设置display:inline-block才可以,这时这个行内元素看起来有点像标准浏览器中的行内块,但实际并不是,只是它hasLayout罢了。要达到这个效果,未必一定要用display:inline-block,使用任何能使其hasLayout的办法都行:zoom:1、writing-mode:tb-rl等等。

为什么IE有这个奇怪的东西?
IE早期版本中没有Block formatting context的概念,而是使用hasLayout来达到类似的效果。

关于hasLayout,可以参考:
http://www.satzansatz.de/cssd/onhavinglayout.html
http://www.brunildo.org/test/InlineBlockLayout.html

关于Block formatting context,可以参考:
http://www.w3.org/TR/CSS21/visuren.html#block-formatting

相关推荐

    让IE6/IE7支持display:inline-block属性的两种方法

    在IE6和IE7中这个版本的IE流量器中,对display:inline-block属性支持不佳,下面为大家准备两种方法可以解决此问题,让IE6/IE7 支持 display:inline-block 的方法,感兴趣的朋友可以了解下

    CSS属性display:inline-block用法深入理解

    在使用CSS实现表现的时候,会经常接触到display:inline-block这一属性,它可以将对象呈递为内联对象,但是对象的内容作为块对象呈递,旁边的内联对象会被呈递在同一行内,允许空格。本文向大家描述一下CSS属性...

    IE6的inline-block

    IE6不支持这个属性,但IE8开始支持这个属性。 让IE6内联元素具备inline-block特性 由于inline-block会触发IE的layout,所以IE6中只要设置{display:inline-block;}即可。 让IE6区块元素具备inline-block属性,有两...

    深入解析CSS的display:inline-block属性的使用

    但是,由于display:inline-block最大的不同就是其没有父元素的匿名包裹特性,这使得display:inline-block属性的使用非常自由,可与文字,图片混排,可内嵌block属性元素,可以可以置身于inline水平的元素中。...

    如何解决IE6/IE7不识别display:inline-block属性

    ie6,ie7的haslayout属性是个让人头疼的问题。在做导航条的时候,一般会用到ul li结构,大多数时候我们是把li设置为浮动,让其并排显示在同一行。还有一种方法就是设置li为display:inline;这样可以达到同样的效果,...

    关于css display: inline block inline-block的区别分析

    但很遗憾,最流行的 IE 和 Firefox 却不支持这个属性(在 Firefox3 版本中将会支持 display:inline-block)。不过 Firefox 下却有私有属性 -moz-inline-box 和inline-block 形似,为什么是“形似”而不是“神似”呢...

    带你深入剖析inline-block属性值的前世今生

    曾几何时,display:inline-block 已经深入「大街小巷」,随处可见 「display:inline-block; *display:inline; *zoom:1; 」这样的代码。如今现代浏览器已经全面支持这...IE6、7 真的不支持 display:inline-block 吗?di

    [转]关于display: inline,block,inline-block 的详细应用

    NULL 博文链接:https://hc24.iteye.com/blog/832493

    有关display:inline-block在FF出现空白的解决方案

    NULL 博文链接:https://qiyan86-163-com.iteye.com/blog/551754

    ChangMM#javascript-html-css-issue#CSS-兼容ie6、7的inline-block1

    其实我们以为应该是这样的:但是ie6,ie7是这样显示的:IE6/IE7下对display:inline-block的支持性不好。解决方案:直接让块元素设置为内

    display:inline、block、inline-block的区别(转的)

    NULL 博文链接:https://tianqiushi.iteye.com/blog/2101378

    display:inline-block的原理分析

    在使用 CSS 实现表现的时候,会经常接触到 display:inline-block 这一属性,无论是初接触 ... 但很遗憾,最流行的 IE 和 Firefox 却不支持这个属性(在 Firefox3 版本中将会支持 display:inline-block)。不过 Firefox

    css之display属性之inline-block布局实现详解

    DOCTYPE,则 Internet Explorer 8 (以及更高版本)支持属性值 "inline-table"、"run-in"、"table"、"table-caption"、"table-cell"、"table-column"、"table-column-group"、"table-row"、"table-row-group"、以及 ...

    兼容性的 inline-block 属性

    而现在对于 inline-block 属性运用的需求也越来越多,可惜依旧只有 Firefox3 beta、IE8 beta、Opera、Safari 支持 inline-block 属性(注:原来只有 Opera、Safari 支持),但 IE6、IE7 可以通过触发 hasLayout 来...

    深入display:inline-block

    在使用 CSS 实现表现的时候,会经常接触到 display:inline-block 这...但很遗憾,最流行的 IE 和 Firefox 却不支持这个属性(在 Firefox3 版本中将会支持 display:inline-block)。不过 Firefox 下却有私有属性 -moz-i

    使用font-size:0px 来制作跨浏览器的inline-block css属性

    现代浏览器的最新版都支持inline-block,只有该死的ie6、7不支持inline-block,但ie6、7可以通过 display:inline;zoom:1;来模拟。 下面是inline-block兼容的代码: 复制代码代码如下: display:inline-block;*...

Global site tag (gtag.js) - Google Analytics