我在浏览跨浏览器支持display:inline-block ...
时遇到了这个问题selector {
display: -moz-inline-box;
display: inline-block;
zoom: 1;
*display: inline;
}
*显示有什么作用?
链接自: http://www.aarongloege.com/blog/web-development/css/cross-browser-inline-block/
答案 0 :(得分:8)
*property: value;
这是一个黑客,所以我不建议你使用它。这样表示的样式仅由IE 7及以下版本解释,因此其他浏览器完全忽略这些样式。
这是非标准(或有效)的CSS,但它有时会被用来击败IE。
答案 1 :(得分:6)
正如其他人所说,这是IE7及以下的黑客攻击
但是这个,你给出的例子是一个特定的黑客,所以不像你收到的评论我不建议删除它..你可以移动它或删除后你读过这本书并不需要它;)
btw我同意-moz-inline-box可能不再需要了,它适用于旧版本的Firefox
selector {
display: -moz-inline-box;
display: inline-block;
zoom: 1;
*display: inline;
}
是一个特定的黑客攻击,让IE6 / 7显示块级元素作为内联块。尽管自v5.5起IE已支持inline-block
,但它本身并未在块级元素上执行此操作
因此,在这种情况下,您需要做的是提供元素“布局”(zoom: 1;
)并在此之后将其提供给display: inline
。
现在display:inline-block
也提供了元素布局,因此如果您将display-inline
规则移除到单独的规则集(在条件规则或黑客规则中),则不再需要使用zoom: 1;
我首选的黑客(出于演示目的)&因为内联块是如此虚线有用,&因为它更短是
selector {
display: inline-block;
}
selector {
display: inline !ie7;
}
!ie7
与显示属性之前的*
做的相同,它将该规则提供给IE7及以下 - 您也可以在第二个规则中使用*
版本,然而!ie7清楚地告诉我,无论如何它是一个黑客,它是谁。
如果你有IE7及以下的特定条件样式表,你可以简单地将第二条规则放入其中 - 没有任何*
或ie7
;)
selector {
display: inline;
}
因为IE仍会读取第一个规则集,并且其中的true
已将其hasLayout触发到inline-block
,因此您不需要zoom
您提到的引用黑客很受欢迎,因为它将所有部分保留在一个规则集中,但在这种情况下需要zoom:1
,因为inline-block
无法设置hasLayout,如果它在同一个规则集作为另一个display
属性
答案 2 :(得分:0)
前面的*
是IE浏览器的黑客攻击,特别是版本和7及以下版本。您也可能会看到_display
,其中前面的_
是IE版本6及更低版本的黑客攻击。 CSS规则只适用于那些版本,并被其他浏览器忽略。
答案 3 :(得分:0)
这是IE 7的黑客攻击。该属性仅适用于IE 7.
我总是提到Comprehensive List of Browser-Specific CSS Hacks by Paul Irish
答案 4 :(得分:0)
补充其他问题:
CSS规范说任何未被识别的属性都应该被丢弃。这是由于未来的兼容性。
因此,对于大多数浏览器而言,*property
不是有效的属性,它们只会跳过。
IE7,由于我不知道的原因,将*property
识别为property
,然后他们会处理它,而其他人则不会。{/ p>