IE7不理解display:inline-block
有人可以帮我把我的头绕过这个bug吗? 与Firefox的工作正常,但与Internet Explorer 7不是。 似乎不懂display: inline-block;
。
HTML:
<div class="frame-header"> <h2>...</h2> </div>
CSS:
.frame-header { height:25px; display:inline-block; }
IE7 display: inline-block;
破解如下:
display: inline-block; *display: inline; zoom: 1;
默认情况下,IE7只支持自然inline
元素( Quirksmode Compatibility Table )的inline-block
,所以你只需要对其他元素进行破解。
zoom: 1
在那里触发hasLayout
行为,我们使用star属性hack来设置display
inline
只在IE7和更低(较新的浏览器将不适用)。 hasLayout
和inline
在一起基本上会触发IE7中的行inline-block
行为,所以我们很高兴。
这个CSS不会被验证,并且可以让你的样式表弄乱,所以通过条件注释使用IE7样式表可能是一个好主意。
<!–-[if IE 7]> <link rel="stylesheet" href="ie7.css" type="text/css" /> <![endif]–->
更新
由于没有人使用IE6和7,我将提出一个不同的解决方案:
你不需要破解,因为IE8 自己支持它
对于IE8之前那些必须支持石器时代浏览器的人来说(IE8不是那么老,太咳嗽了 ):
对于IE版本控制的账号,在他的文章中使用像Paul Irish states这样的<html>
标签中的一些条件类
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8"><![endif]--> <!--[if IE 8]><html class="no-js lt-ie9"><![endif]--> <!--[if gt IE 8]><!--><html class="no-js"><!--<![endif]-->
通过这个,你将在不同的IE浏览器的html标签中有不同的类
你需要的CSS如下
.inline-block { display: inline-block; } .lt-ie8 .inline-block { display: inline; zoom: 1; }
这将验证,你不需要额外的CSS文件
老答案
.frame-header { background:url(images/tab-green.png) repeat-x left top; height:25px; display:-moz-inline-box; /* FF2 */ display:inline-block; /* will also trigger hasLayout for IE6+7*/ } /* Hack for IE6 */ * html .frame-header { display: inline; /* Elements with hasLayout and display:inline behave like inline-block */ } /* Hack for IE7 */ * + html .frame-header { display: inline; /* Elements with hasLayout and display:inline behave like inline-block */ }
IE7不支持“inline-block”正确,更多信息在这里: LINK
使用可以使用:'inline'代替。
你究竟想达到什么目的? 举个例子,放在这里: http : //jsfiddle.net/
使用内联,它适用于这种列表项的选择器:
ul li {}
或者是具体的:
ul[className or name of ID] li[className or name of ID] {}