【发布时间】:2011-04-26 19:12:56
【问题描述】:
有没有人遇到过更具体的!important 声明没有覆盖另一个!important 声明的情况?这是基本的 css:
.x-floating {
position: absolute !important;
z-index: 10000 !important;
}
这是我想要用来覆盖 z-index 的:
.x-msgbox.x-floating {
z-index: 10001 !important;
}
当我通过 Windows 上的 Chrome(或 Safari)调试器进行检查时,我看到 .x-msgbox.x-floating 声明被覆盖(划掉),并且 x-floating 声明处于活动状态。这违背了我对 css 特异性的了解,以及我对 simplified tests 的期望。
示例代码:
由于我使用的是 Sencha,这只能在 Chrome 或 Safari 中使用,但这里有一个 jsFiddle link(可能不符合热链接 Sencha 的源代码,但这永远不会获得足够的浏览量来说明它的重要性)。要运行测试,请单击“选择日期”按钮,然后通过拖动旋转其中一个轮子。将出现一个消息框。比较消息框和日期选择器(每个的顶级元素 - 正文的子元素;另一种方法是查找类为 x-floating 的元素)。
【问题讨论】:
-
点击“选择日期”冻结了我的浏览器...
-
您使用的是 Chrome 还是 Safari?
-
嗯。我正在运行测试版通道(Chrome 11.0.696.50),而不是开发版。可能值得提交一个错误报告,但这可能是由于开发通道的不稳定性——Sencha 经过了相对良好的测试,示例代码非常简单。 Windows 上的 Safari 5.0.4 也不会因此而窒息。
-
这真的很奇怪,尤其是 jsFiddle 演示。您的选择器不仅更具体,而且是一种页面样式(这就是 jsFiddle 处理 css 的方式)。与
!important一起,这些事实中的任何一个都应该单独覆盖样式。此外,在 Chrome 开发工具中检查 element.style 表明没有应用内联样式。我想你可能偶然发现了一个真正的 webkit 错误。 -
@Ender:如果我可以生成一个简单的测试用例,我会更愿意说这是一个 webkit 错误,但它确实看起来是可能的。避免使用
!important的另一个原因。感谢您的反馈!
标签: css z-index sencha-touch css-specificity