css中display:inline-block的兼容性问题

inline-block的兼容性问题

兼容性:

IE6、IE7不识别inline-block但可以触发块元素。

其它主流浏览器均支持inline-block。

解决IE6、IE7兼容性的方法:

1、首先设置inline-block触发块元素,具有了layout的特性,然后设置display:inline使块元素呈现内联元素,此时layout的特性不会消失。

2、直接设置display:inline,使用zoom:1触发layout。

兼容所有浏览器的方法是:

display:inline-block;

*display:inline;

*zoom:1;

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

按照这个解释:支持的浏览器有(ie8,ie9,chrome,firefox3.6+,由于我是用firefox3.6测试的) ,ie6,ie7 是不支持这个属性的。

ie6,7 如何支持这个属性呢?

 对于块级元素,直接让块级元素成行内元素, 然后再触发layout。 {display:inline;zoom:1},可能有的同学会说,怎么说ie6,7不支持这个元素呢?

我不是经常在ie6,7的a标签、span 下使用这个属性吗?也起到了作用,这里理解可能有一个误区,使用display:inline-block是触发了layout的原因。

 另外一种方式就是先触发块级元素的layout 属性,然后再让他成内联元素来展现。比如p元素,可以这样写 p{display:inline-block}p{display:inline}

display:inline-block可以用来做什么?

 可以做的事情很多,可以写顶部的菜单,可以图文混排,可以内嵌block元素,也可以至如inline元素中,可以做信息卡片,如百度空间搭讪有缘人的卡片有缘人纪念日的固定宽度的书写,当然也可以做布局。 万变不离其宗,我觉得最本质的就是利用它的使元素为内联对象,但是内容做块状呈递。这点我们应该牢记。只要理解了它的本质东西,我们才可以以不变应万变,甚至可以创造自己的东西。

使用它要注意什么呢?

 在使用了display:inline-block的元素之间有换行符,空格间隙问题。

1.块状元素被设置了display:inline-block后,ie6,7没有空格问题。其他浏览器都有。如下图所示:

在ie8,ie9,firefox可以通过使用font-size:0来解决,但是chrome很悲剧。还是有空白,我使用的是chrome10。不能清除。 可以通过添加letter-spacing属性

的值来解决,建议作者通过尝试来解决这个问题。我设置的值是-8px刚才好清除空白。我担心这会不会有相互覆盖问题。后来我将值调大到-28px,果然,在chrome中有覆盖,但是在其他的浏览器中没有。可见解决这个问题以chrome为主。

2.内联元素被设置了display:inline-block后,所有的浏览器都有换行,空白间隙问题。

如下图所示:

 所有浏览器,ie6,7,8,9 chrome,firefox都有空白,

怎么解决呢。直接在包含的元素上添加letter-spacing:-8px; 即可。

最后附上我研究的代码:

<!DOCTYPE HTML>
<html >
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
    <style type="text/css">
* { margin:0; padding:0 }
#doc { width:990px; margin:0 auto; margin-top:50px;font:12px/1.5 arial; }
#doc h4 { border-bottom:1px solid #000; margin:10px 0px; }
dib{display:inline-block}
div{display:inline-block;}
div{display:inline;}
ul{letter-spacing:-8px;}
ul li{display:inline;zoom:1;}
    </style>
    <title></title>
</head>
<body>
    <div id="doc">
    <h4>display:inline-block的研究</h4>
    <div class="dib">测试这个属性的支持情况1</div>
    <div class="dib">测试这个属性的支持情况2</div>
    </div>
    <ul >
    <li><img src="dj.jpg"/></li>
    <li><img src="dj.jpg"/></li>
    </ul>
    <div style="letter-spacing:-8px;">
    <img src="dj.jpg"/>
    <img src="dj.jpg"/>
    <img src="dj.jpg"/>
    </div>
</body>
</html>

时间: 2024-10-25 23:08:15

css中display:inline-block的兼容性问题的相关文章

CSS中display:inline-block属性妙用

  CSS中display:inline-block属性用法 在使用CSS实现表现的时候,会经常接触到display:inline-block这一属性,无论是初接触Web标准还是接触标准已久的朋友,大都会对这一属性感觉很迷惑和模糊. display:inline-block 将对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行内,允许空格. 但对于这个属性不是所有浏览器都识别. 支持的浏览器有:Opera.Safari 但很遗憾,最流行的IE和Firefox却不支持

css中display:Inline-Block深入理解说明

inline-block,如此的让人难以琢磨,并且又有诱人的显示方式宣传,只是其承诺的很多,兑现的却如此少.我已经收到这样的PSD文件有很多次: 看了之后我就开始哭了. 通常情况下,这个类型的布局是小菜一碟.固定宽度,固定高度,左侧浮动(float:left),然后就完成了.但但但是,这个设计需要与可变数量的内容一起工作,也就是说如果这些块中的一个比其他块拥有更多的内容,它将会破坏整个布局: 由于第一个画廊项目比其他的高,所以第五个项目就相对于它进行左侧浮动而不是位于它下面.总体上来说我们想要一

解决css中display:inline-block中间的空白间隙

1.display:inline-block 让一个元素具有"区块元素"的属性(可以设置width和height),又具有"内联元素"的属性(不产生换行). 2.IE中的inline-block IE6不支持这个属性,但IE8开始支持这个属性. 让IE6内联元素具备inline-block特性 由于inline-block会触发IE的layout,所以IE6中只要设置{display:inline-block;}即可. 让IE6区块元素具备inline-block属

css中display:none和visibility:hidden的区别

区别分析 首先我们都知道,display: none 和 visibility: hidden 都可以起到隐藏元素的功能 两者的区别在于占用文档流的不同 display: none 隐藏元素同时去除元素在文档流所占的空间 visibility: hidden 隐藏元素, 但不去除元素在文档流所占的空间 区别示例 HTML Code <span class="one">第一区域</span> <span>第二区域</span> <br

CSS中display与visibility的区别

css|区别 起因: 前几天在做一个图片无间隙滚动的效果,要利用到一个隐藏的层. 问题: 之间复制以前文字滚动的效果代码(文字滚动时无错误),结果发现页面被拉长了一倍,也就是隐藏的层. 解决: 查CSS手册后发现了隐藏内容原来是有区别的,一种是保留对象的物理空间,一种是不保留. ------------------------------- display:none CSS1 隐藏对象.与 visibility 属性的hidden值不同,其不为被隐藏的对象保留其物理空间 visibility:h

CSS中display各属性语法参数详解 附实例

这里向大家描述一下HTML DOM display属性的定义和用法,HTML DOM display属性主要用来设置元素如何显示,比如当此属性值为none时,表示此元素不会被显示,而block则表示此元素将显示为块级元素,此元素前后会带有换行符. HTML DOM display属性定义和用法 此属性主要用来设置元素如何显示. 语法: Object.style.display=value 可能的值 HTML DOM display属性实例 本例设置不显示元素: <html> <head&

解决CSS中 display 与 visibility 的区别_基础教程

span为内联/inline元素,给他宽度赋值是没有效果的. span为内联/inline元素,给他宽度赋值100px+float:right;可以看到有了宽度. 这个li被定义为内联/inline,设置宽度没有效果 test test 这个li被定义为内联/inline+float:left,设置宽度有效果 test test

css中display: inline-block;间隙解决方法

标签使用display: inline-block;时,将对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行内,允许空格.(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性) 使用inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距,很简单的个例子: <!DOCTYPE html> <html lang="zh-cn"> <head>  <m

CSS中vertical-align垂直对齐属性介绍

一向以来,我对vertical-align的属性都搞的不是太清楚,今天刚好碰到有朋友问我相关的问题,于是自己潜心研究了一番,发现这玩意还真不是个简单的东西,在此我分享的东西都是抛弃脑残的IE的,如果你用的是脑残的IE,请跳过此篇文章. 一.为什么我设置的vertical-align没用? 相信很多前端开发人员都遇到过这个问题,有的时候自己明明写了vertical-align属性值,但就是没效果,归其原因,是因为vertical-align是个比较奇葩的东西,想要让他起作用,就要投其所好. 我们知