display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。
但对于这个属性不是所有浏览器都识别。
支持的浏览器有:Opera、Safari。
但很遗憾,最流行的 IE 和 Firefox 却不支持这个属性(在 Firefox3 版本中将会支持 display:inline-block)。不过 Firefox 下却有私有属性 -moz-inline-box 和inline-block 形似,为什么是“形似”而不是“神似”呢?这是因为使用 -moz-inline-box 会带来很多意想不到的后遗症,比如使用这一属性后,text-align 有时候就会有问题,还得改用 Firefox 的私有属性 -moz-box-align 来解决(谢谢 aoao 提供案例)。
建议:最好不要使用 Firefox 私有属性 -moz-inline-box。
或许有朋友会对上面所说的 IE 也不支持 display:inline-block 属性,表示疑问或者反对。说:“我在 IE 中对 a 或者 span 等内联元素使用 display:inline-block 一直是有效的”。
其实不然,在IE中对内联元素使用 display:inline-block,IE 是不识别的,但使用 display:inline-block 在 IE 下会触发 layout(如果你对 layout 感觉到陌生,可以参看 old9 翻译的《On having layout》),从而使内联元素拥有了display:inline-block 属性的表症。从上面的这个分析,也不难理解为什么 IE 下,对块元素设置 display:inline-block 属性无法实现 inline-block 的效果。这时块元素仅仅是被 display:inline-block 触发了 layout,而它本就是行布局,所以触发后,块元素依然还是行布局,而不会如 Opera 中块元素呈递为内联对象。
延伸一个问题:IE下块元素如何实现 display:inline-block 的效果?
有两种方法:
1、先使用 display:inline-block 属性触发块元素,然后再定义 display:inline,让块元素呈递为内联对象(两个display 要先后放在两个 CSS 声明中才有效果,这是 IE 的一个经典 bug ,如果先定义了 display:inline-block,然后再将 display 设回 inline 或 block,layout 不会消失)。代码如下(…为省略的其他属性内容):
div {display:inline-block;...}
div {display:inline;}
2、直接让块元素设置为内联对象呈递(设置属性 display:inline),然后触发块元素的 layout(如:zoom:1 等)。代码如下:
div {display:inline; zoom:1;...}
分享到:
相关推荐
特别是旧版浏览器,比如IE6、IE7和Firefox2中,对inline-block的支持并不理想。这个问题在跨浏览器兼容性方面尤其明显。 在描述中提到的问题,是关于无序列表元素()采用inline-block后,不同浏览器渲染效果不一致...
总的来说,了解并掌握如何处理`inline-block`的浏览器差异,尤其是Firefox和IE8中的这个bug,是提升前端开发者技能的重要一环。在实践中,我们应当根据项目需求和浏览器兼容性选择最合适的布局策略,以确保网页在...
但很遗憾,最流行的 IE 和 Firefox 却不支持这个属性(在 Firefox3 版本中将会支持 display:inline-block)。不过 Firefox 下却有私有属性 -moz-inline-box 和inline-block 形似,为什么是“形似”而不是“神似”呢...
早期版本的Firefox不完全支持此属性,而是使用其私有属性`-moz-inline-box`,但这个属性存在一些问题,比如可能导致文本对齐问题,需要使用`-moz-box-align`来解决。由于这些限制和潜在的兼容性问题,通常建议避免...
例如,旧版本的 Firefox 使用 `-moz-inline-box` 来模拟 `display:inline-block` 的效果,但这可能导致一些问题,如 `text-align` 属性的不正常行为,可能需要借助 `-moz-box-align` 解决。因此,通常建议避免使用...
而现在对于 inline-block 属性运用的需求也越来越多,可惜依旧只有 Firefox3 beta、IE8 beta、Opera、Safari 支持 inline-block 属性(注:原来只有 Opera、Safari 支持),但 IE6、IE7 可以通过触发 hasLayout 来...
通过同时设置`display: -moz-inline-stack`和`display: inline-block`,可以确保在Firefox 2和其他支持`inline-block`的浏览器中都能正常工作。然而,这可能会引入新的问题,如元素间距的异常,此时可以通过在`<li>`...
例如,使用Arial字体,字号为16px时,`letter-spacing`设为-4px,Firefox、Chrome、Safari和IE8都显示-4px的间距,但在IE6/7中不兼容,表现为不同的效果。同样的情况出现在其他字体和字号上,例如Times New Roman、...
早期版本的Firefox(小于3.0)并不支持`display:inline-block`,而是使用私有属性`-moz-inline-box`来实现类似的效果。但由于`-moz-inline-box`存在一些副作用,如可能影响`text-align`的正常工作,因此通常不推荐...
2. Firefox私有属性:旧版的 Firefox 2 使用 `-moz-inline-box` 和 `-moz-inline-stack` 来模拟 `inline-block` 效果。这两种方式中,`-moz-inline-stack` 更接近标准的 `inline-block` 表现。 3. 解决 `-moz-...
在实现`inline-block`布局时,开发者可能遇到的一个问题是Firefox、Safari、Opera和IE8+等现代浏览器会在相邻的`inline-block`元素间产生3像素的间距。这是因为HTML源码中的换行符被浏览器解析为一个空格,导致了这...
各浏览器inline-block 元素默认的间隙,与字号。两个input,通过改变父元素...chrome 38.0.2125.8liebao 5.2.85.9539firefox 34.0.5firefox 35.0.1这几个趋势差不多。Safari 8.0.2(10600.2.5) 比IE全系列普遍多6像素