display:inline-block的深入理解

作者:blank 来源:蓝色理想 时间:2007-05-11 17:03:00 

BLOG阅读:http://www.planabc.net/article.asp?id=118

在使用CSS实现表现的时候,会经常接触到display:inline-block这一属性,无论是初接触Web标准还是接触标准已久的朋友,大都会对这一属性感觉很迷惑和模糊。

display:inline-block

引用:

将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。


但对于这个属性不是所有浏览器都识别。

支持的浏览器有:Opera、Safari

但很遗憾,最流行的IE和Firefox却不支持这个属性(据说下一版本的Firefox将会支持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,css
0
投稿

猜你喜欢

  • ie6下实现position-fixed效果

    2009-06-05 18:47:00
  • python算法表示概念扫盲教程

    2022-06-22 00:43:34
  • asp 分页函数,可以显示 1,2,3,4,5... 前十页,后十页,下一页,上一页

    2009-07-05 18:34:00
  • python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)

    2022-07-07 17:14:01
  • Python DPED机器学习之实现照片美化

    2023-11-25 01:50:24
  • ASP 相关文章或者相关产品

    2011-03-30 11:12:00
  • 简单谈谈Python中的闭包

    2021-10-20 12:50:46
  • Pytorch教程内置模型源码实现

    2022-09-04 12:58:50
  • 详述numpy中的np.random.random()系列函数用法

    2023-08-08 00:25:09
  • 解决Golang time.Parse和time.Format的时区问题

    2024-05-22 17:46:06
  • 通过python将大量文件按修改时间分类的方法

    2023-04-11 00:26:03
  • 如何通过python实现IOU计算代码实例

    2021-07-09 02:06:44
  • 解决使用python print打印函数返回值多一个None的问题

    2021-08-22 07:52:09
  • Ubuntu+python将nii图像保存成png格式

    2022-05-11 10:04:51
  • Go日志框架zap增强及源码解读

    2024-05-22 10:19:13
  • Flask-Vue前后端分离的全过程讲解

    2022-08-07 23:51:11
  • CSS+asp仿迅雷人气指数

    2009-08-03 14:11:00
  • python中bottle使用实例代码

    2023-07-03 14:21:15
  • Python专用方法与迭代机制实例分析

    2021-09-07 22:05:22
  • 在vue-cli3中使用axios获取本地json操作

    2023-07-02 17:07:12
  • asp之家 网络编程 m.aspxhome.com