display:inline-block;在各浏览器下的问题和终极兼容办法

display:inline-block;在各浏览器下的问题和终极兼容办法

一、IE 5.5、6、7 、8(Q)中display:inline-block;失效

兼容办法:

  • IE 5.5、6、7 、8(Q)中 block 元素对 inline-block 支持不完整,如果要达到类似的效果,需要先设置为 display:inline,然后使用
  • zoom:1 等触发 hasLayout。 IE 5.5、6、7 、8(Q)中 inline 元素欲达到 inline-block 的效果只需直接设置此属性值或使用 zoom:1 等均可。

二、现代浏览器中 inline 和 block 元素 display:inline-block; 后均会产生水平空隙

其中IE 6、7、8(Q)的情况比较特殊

  • block元素display:inline-block;

  • inline元素display:inline-block;

解决方案:使用font-size:0;消除空隙

  • Safari 5.1.7 由于不支持 font-size:0 ,仍然存在空隙,需要使用负letter-spacing来消除Safari下的空隙。

  • 使用font-size:0;后,IE6、7 中始终存在的 1px 空隙,需要添加word-spacing:-1px;来解决。

三、终极的兼容所有浏览器的可复用性代码

 1 .dib-wrap {
 2     font-size:0;/* 所有浏览器 */
 3     *word-spacing:-1px;/* IE6、7 */
 4 }
 5 .dib-wrap .dib{
 6     font-size: 12px;
 7     letter-spacing: normal;
 8     word-spacing: normal;
 9     vertical-align:top;
10     display: inline-block;
11     *display: inline;
12     *zoom:1;
13 }
14 @media screen and (-webkit-min-device-pixel-ratio:0){
15 /* firefox 中 letter-spacing 会导致脱离普通流的元素水平位移 */
16     .dib-wrap{
17         letter-spacing:-4px;/* Safari 等不支持字体大小为 0 的浏览器, N 根据父级字体调节*/
18     }
19 }

使用display:inline-block代替float的好处

可以通过 vertical:middle; 和 text-align:center; 轻易地实现元素的垂直居中和水平居中。

笔者注:此文并不是我的原创,只是笔者通过淘宝UED和其他的一些相关文章作的检验和总结。

参考资料:

转载于:https://www.cnblogs.com/WhiteCusp/p/3324306.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值