CSS选择器如何正常工作

时间:2013-07-15 07:20:58

标签: jquery html css

如果我有CSS定义;

.grid .data table tr.selected td [class^="icon-"], .grid .data table tr.selected td [class*=" icon-"] {
    background-image: url("../img/css-sprites.png");
}

它如何正常工作?我的意思是如果满足条件(tr正在选择类,并且它有一个子td,其中任何子元素都有包含名称'icon - '的类)

我的问题是“to”将背景图像应用到哪个元素?

4 个答案:

答案 0 :(得分:2)

css规则适用于与选择器匹配的每个元素。因此,具有以icon-开头且具有指定父项的类名的每个元素都将获得该背景图像。

另请注意,有两个规则,以逗号分隔:

.grid .data table tr.selected td [class^="icon-"],
.grid .data table tr.selected td [class*=" icon-"]

多个选择器意味着一个或另一个需要匹配才能应用规则。

属性匹配选择器^=表示“以...开头”。 *=表示“包含”。请按照第一条评论的链接获取有关特定类型选择器的更多信息:css selector by class prefix(感谢BoltClock)。

这也很好看:The Skinny on CSS Attribute Selectors

答案 1 :(得分:0)

每个选择器中的最后一个元素都会收到后台网址[class*=" icon-"][class^="icon-"]

答案 2 :(得分:0)

背景图像何时应用于所有

当我们使用,(逗号)来指定选择器时,我们会说...this, this and this would have the same style或换句话说,这些逗号分隔的元素将各自具有相同的指定样式,因此样式将应用于每个元素。

Wehn将背景图像应用于一个元素

由于你的问题中的代码在元素之间没有逗号,所以你不断地定义彼此的子元素,所以你指定的最后一个子元素是td[class*='icon-]所以所有tds都包含{{1字母将获得应用于它们的样式。

答案 3 :(得分:0)

“^ =”

在这种情况下,它将样式应用于class的{​​{1}}元素,该icon-的{​​{1}} child td<tr class="selected">的子元素

“* =”

在逗号之后,"*="部分定义其中包含"icon-"child td的任何类,并且您的相应树适用于样式