当使用css选择器选择电话号码时,我遇到了一个有空格的课程。至少有十个选择器,我可以实现我的目标。我的问题是我应该选择哪一个?为什么?提前谢谢。
班级所在的元素:
<div itemprop="telephone" class="phones phone primary">(310) 443-8911</div>
我上面谈过的选择器:
div.phones
div .phones
div.phones.phone
div .phones.phone
div.phone.primary
div .phone.primary
div.primary
div .primary
div.phones.phone.primary
div .phones.phone.primary
答案 0 :(得分:3)
类之间的空格表示单独的类名,而不是单个名。例如,class="phones phone primary"
表示该元素有三个类:phone,phone和primary。
您可以使用任何这些类选择此元素。例如:
div.phones
div.phones.phone
div.phone.primary
div.primary
div.phones.phone.primary
但以下情况不起作用:
div .phones
div .phones.phone
div .phone.primary
div .primary
div .phones.phone.primary
选择元素<div itemprop="telephone" class="phones phone primary">(310) 443-8911</div>
(除非它恰好是另一个div的后代),因为div
和列出的类之间的空格表示后代关系。换句话说,引入空格意味着选择具有列出的类的元素(例如.phones.phone
),这是div的后代。
对于您应该使用的哪个有效选择器完全取决于您和您的需求。上面的第一组在选择你想要的内容时都是有效的,但是他们specificity相对于其他选择器以及你拥有的其他规则可以考虑他们如何渲染。
答案 1 :(得分:1)
更喜欢哪个是基于您想要实现的目标。其他人表示,每个级别的空间分开。您可以在CSS中使用类的组合来共享元素之间的样式,同时也针对特定的类。
例如,如果您的HTML看起来像:
<div itemprop="telephone" class="phone primary">Phone: (310) 443-8911</div>
<div itemprop="telephone" class="phone">Cell: (310) 443-1234</div>
<div itemprop="telephone" class="phone">Fax: (310) 443-4321</div>
您可能希望同样设置所有电话号码的样式,但有一些变化:
/* For all phone numbers */
div.phone {
font-weight: bold;
font-size: 18px;
cursor: default;
display: block;
color: black;
}
/* Just the primary phone */
div.phone.primary {
color: red;
}
这样,主要电话号码可能看起来像其他所有电话号码,除了它是红色而不是黑色。
你的元素“手机”和“手机”对我来说似乎没什么用。
答案 2 :(得分:0)
这不是带空格的类,这是一个有三个类的div。
对于您的选择器,一旦您了解了不同部分如何协同工作,就会变得轻松
div
是元素类型选择器,它只匹配html类型为div
的元素.xyz
是一个类选择器,它只匹配xyz
作为其中一个类的元素(如果除xyz
之外还有其他类,它们仍会匹配)< / LI>
div.xyz
一样,选择器只匹配与两个部分匹配的元素,所以这个只匹配至少xyz
作为一个类的div(并且它是好吧,如果他们有其他课程)div.abc.xyz
只匹配同时包含div
和abc
xyz
div .xyz
将匹配具有xyz
作为其中一个类的元素,这些元素可以是子元素,也可以是孙子元素,也可以是div的更远距离后代。例如,选择器将匹配h1
中的<div><h1 class='xyz'>bla</h1></div>
,但它与位于文档根目录的<div class='xyz'>bla</div>
不匹配(因为它不是div
的后代{1}})在您列出的选择器中,保证以下选项符合您的元素:
div.phones
div.phones.phone
div.phone.primary
div.primary
div.phones.phone.primary
以下选择器仅与您的元素匹配,如果它直接或间接在另一个div
中div .phones
div .phones.phone
div .phone.primary
div .primary
div .phones.phone.primary
您使用的选择器取决于您希望的具体程度,即您想要匹配的页面的其他元素。例如,div.phones.phone.primary
比div.phones
更具体,这意味着它可能会匹配您网页中较少的其他元素。
如果您想阅读有关系统选择选择器和类的特定学科,您应该阅读有关OOCSS,Atomic CSS,BEM和朋友的信息。您可以阅读this article开始使用。