我研究过Google Docs的CSS样式,我注意到了这样的事情:
.goog-inline-block {
position : relative;
display : -moz-inline-box;
display : inline-block
}
* html .goog-inline-block {
display : inline
}
*:first-child + html .goog-inline-block {
display : inline
}
html>body .goog-inline-block {
display : -moz-inline-box;
display : inline-block
}
我理解这个.goog-inline-block
类应该是什么意思,但是这段代码对我来说是个问题:
.class-name
声明与* html .class-name
声明不同?*:first-child + html .class-name
做什么?答案 0 :(得分:4)
这条规则:
* html .goog-inline-block {
display : inline
}
为IE6定义了一种样式。在IE6的文档模型中,有一个包含html
的神秘根元素,因此这个选择器利用* html
hack来利用这个事实。
这条规则:
*:first-child + html .goog-inline-block {
display : inline
}
为IE7定义了一种样式。在IE7的文档模型中, html
上面没有根元素,但之前还有另一个,这是*:first-child + html
选择器的目标
这条规则:
html>body .goog-inline-block {
display : -moz-inline-box;
display : inline-block
}
为IE7 +和其他浏览器定义样式。 IE6不支持子选择器>
,因此它永远不会看到此规则。 -moz-inline-box
实际上与inline-block
相同,但适用于Firefox 2及更早版本,因为这些版本不支持inline-block
。
该类有很多声明,因为不同的浏览器存在display: inline-block
样式的问题,因此这些浏览器需要黑客和解决方法。