为什么选择html元素时我必须精确?

时间:2014-07-08 00:12:27

标签: html css css-selectors

我正在做一个教程,这将导致一个花哨的基于html5 / css3 / js的计算器。以前从未发生过的事情 - 我试图以不同的方式设置operator元素的样式,因为它们可以很容易地与0-9之类的其他键区分开来。

我输入了我的CSS .keys .operator并添加了不同的背景属性。但是,它没有用。

然后我试图更加具体,如.keys span.operator

这很有用。但是,它给我留下了问号。

我的问题:

为什么在这种情况下我需要如此具体,否则CSS不会吞下背景属性?

为什么我不能单独输入.operator类?

我认为通过输入.keys .operator,我会在类.operator的任何元素中选择具有.keys类的每个html元素。

这对我来说听起来合乎逻辑,但它没有用。

如果我愿意接受CSS强制给我的思路,那么理论上我需要更加精确并写div.keys span.operator但是在教程中它不需要。

有人可以向我解释原因吗?

以下是我正在处理的代码:

http://codepen.io/anon/pen/qgjyp

2 个答案:

答案 0 :(得分:2)

您正在使用更高的精度。 CSS选择器越“精确”,它就越优先于选择相同元素但精度较低的其他CSS。

你很可能在它下面有CSS覆盖你提供的CSS或CSS在CSS文件中某个地方更精确。

例如,span的具体程度低于span.MyClass,因此span.MyClass优先于span。任何具有!important属性的样式都是自动赢取任何东西,但很少使用。

查看CSS文档或在浏览器中检查它,看看哪些类正在影响该元素。

点击此链接:Specifics on CSS Specificity

答案 1 :(得分:0)

我刚看了一眼,如果我删除了span前面的.operator,那对我来说没问题。这可能是您的浏览器的问题。我正在使用Chrome Canary。以下是笔的链接:http://codepen.io/anon/pen/eGCfn