Answers:
IE7 display: inline-block;
黑客如下:
display: inline-block;
*display: inline;
zoom: 1;
默认情况下,IE7仅支持inline-block
自然inline
元素(Quirksmode兼容性表),因此您仅需要针对其他元素进行破解。
zoom: 1
是在那里触发hasLayout
行为的,我们使用star属性hackdisplay
来inline
仅将IE7和更低版本中的设置为(新的浏览器不会应用)。hasLayout
并且inline
基本上可以一起触发inline-block
IE7中的行为,因此我们很高兴。
该CSS不会验证,并且可能使您的样式表变得混乱,因此通过条件注释使用仅IE7的样式表可能是一个好主意。
<!–-[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" />
<![endif]–->
*zoom:1;
触发hasLayout。因此,更明确的是, *zoom
and *display
在一起
由于没有人再使用IE6和7,因此我将提出一个不同的解决方案:
您不再需要黑客,因为IE8 本身就支持它
对于那些必须在IE8之前支持那些石器时代的浏览器的人(不是IE8这么老,太咳嗽):
对于IE版本控制,请在他的文章中使用一些条件类,<html>
例如Paul Irish States
<!--[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-tag中具有不同的类
您需要的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 */
}
inline-block
到frame-header
元素。或者改变inline-block
通过frame-header
在CSS选择器。
IE7不正确地支持“内联阻止”,更多信息在这里:LINK
Use可以使用:“ inline”代替。
您到底想达到什么目的?让我们举个例子,放在这里:http : //jsfiddle.net/