任何人都可以解释一下下面的css做了什么?
.validate-error .validate-error {
color: #cc2424;
display: inline-block;
margin-top: 5px;
}
.make-switch + .validate-error {
margin-left: 10px;
}
在第一个css中,我看到same class name
使用了两次?这个css有效吗?我遇到过这个帖子
What is the difference between the selectors ".class.class" and ".class .class"?
但如果我们两次使用相同的班级名称,则不确定是否适用。
答案 0 :(得分:6)
第一个样式子元素/后代具有相同的类名:
<div class="validate-error">
This color may be different from #cc2424
<div class="validate-error">Has color #cc2424</div>
</div>
这意味着:为具有相同类名的子元素应用/覆盖样式。
第二个是兄弟姐妹:
<div class="make-switch"></div>
<div class="validate-error">Has left margin</div>
<div class="validate-error">Has no left margin</div>
这意味着:只有当.make-switch
后跟.validate-error
时,才会将样式应用于.validate-error
。
<强>演示强>
答案 1 :(得分:2)
.validate-error .validate-error {
...
}
此css定位的是.validate-error
的后代.validate-error
。
例如
<div class="validate-error">
<div class="validate-error">
</div>
</div>
当.validate-error
.make-switch
时,下一个css会将其定位
.make-switch + .validate-error {
...
}
答案 2 :(得分:0)
是的,它是有效的。 CSS中没有规则阻止类名在复杂选择器中多次出现。 HTML中没有规则可以防止两个元素(其中一个是另一个元素的后代)共享一个类的成员资格。
答案 3 :(得分:0)
Id只应该是唯一的,但我们可以多次使用classname。
答案 4 :(得分:0)
当选择器部件粘在一起而没有空格时,意味着它应该都匹配相同的元素。
示例:(应仅匹配同时具有validate-error
和other-class
的元素)
.validate-error.other-class
当它们之间有空格时,您选择的元素具有other-class
作为类,并且parent element
具有validate-error
类
第二个选择器中的+
实际上意味着你不想要一个make-switch
的孩子,但你想要sibling
元素,但前提是它有validate-error
类