`
weballan001
  • 浏览: 26199 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
最近访客 更多访客>>
社区版块
存档分类
最新评论

display属性 inline-block的深入理解

阅读更多
在使用 CSS 实现表现的时候,会经常接触到 display:inline-block 这一属性,无论是初接触 Web 标准还是接触标准已久的朋友,大都会对这一属性感觉很迷惑和模糊。
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;…}
分享到:
评论

相关推荐

    display:inline-block的实际应用

    `display:inline-block` 是 `display` 的一个值,它结合了块级元素(block-level element)和内联元素(inline element)的一些特性,为网页布局提供了更灵活的选择。在本篇文章中,我们将深入探讨 `display:inline-...

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

    本篇文章将深入探讨`display:inline`、`display:block`以及`display:inline-block`这三种主要的显示模式之间的区别,帮助你更好地理解它们在实际开发中的应用。 首先,我们来看`display:inline`。这种模式使得元素...

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

    在网页布局设计中,`display:inline-block` 是一个非常常用且强大的CSS属性,它允许元素在保持块级元素特性的同时,像内联元素一样并排显示。然而,在不同浏览器之间,尤其是在Firefox(FF)上,可能会遇到一些显示...

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

    下面我们将深入探讨`display:inline-block`的用法及其浏览器兼容性问题。 首先,`display:inline-block`的作用是将元素呈现为内联对象,这意味着它们会与其他内联元素排列在同一行中,不会强制换行。同时,`inline-...

    inline-block 前世今生1

    深入理解这个属性的前世今生,以及与之相关的hasLayout、Block formatting contexts等概念,对于提升前端开发技能和解决实际问题至关重要。只有这样,才能真正掌握display:inline-block,避免人云亦云,从而在Web...

    display:inline-block的原理分析

    `display:inline-block` 是 CSS 中的一个重要属性,用于控制元素的布局方式。这个属性结合了 `display:inline` 和 `display:block` 的特性,使得元素既能像内联元素一样在一行内排列,又能像块级元素一样拥有宽度、...

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

    在这个详解中,我们将深入讨论`display`属性中的`inline`、`block`以及`inline-block`值,以及它们在实际布局中的应用。 1. **`display: inline`** `inline`值使得元素作为行内元素显示,这意味着元素会与其他...

    display:inline-block的使用示例

    在网页布局设计中,`display:inline-block` 是一个非常实用的CSS属性,它允许元素以行内元素的方式显示,但同时保留着块级元素的特性,如设置宽度、高度以及垂直对齐等。这个属性在处理多列布局,尤其是需要在有限的...

    跨浏览器的inline-block声明上承诺了很多提供的却很少

    通过在display属性中先声明"-moz-inline-stack",再声明"inline-block",可以确保在支持inline-block的浏览器中使用inline-block,而在不支持的情况下则使用兼容的替代方案。 更进一步,针对IE浏览器,尤其是IE7,...

    使用display:inline-block居中没有宽度的元素

    "使用display:inline-block居中没有宽度的元素"这个主题主要涉及到CSS中的两个关键概念:`text-align`属性和`display`属性的`inline-block`值,它们在实现动态或未知宽度元素的居中对齐上发挥着重要作用。...

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

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

    深入display:inline-block

    `display:inline-block`是CSS布局中的一个重要属性,用于将元素表现得既像内联元素那样在一行内排列,又能像块级元素那样控制其内部内容的布局。这种特性使得`inline-block`在网页布局中非常实用,特别是在创建响应...

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

    在Web开发中,`display:inline-block`是一种非常实用的CSS属性,它允许元素拥有块级元素的特性(如自定义宽度、高度),同时保持内联元素的排列方式,即允许元素在同一行显示。然而,IE6和IE7这两个较老的浏览器对`...

    IE6的inline-block

    1、display:inline-block 让一个元素具有“区块元素”的属性(可以设置width和height),又具有“内联元素”的属性(不产生换行)。 2、IE中的inline-block IE6不支持这个属性,但IE8开始支持这个属性。 让IE6...

Global site tag (gtag.js) - Google Analytics