CSS3中的After-Before伪为多个类

时间:2018-02-20 10:05:44

标签: css css3 css-selectors pseudo-element

如何分配&在伪类到多个CSS类之前

例如:

[class*="divclass-"]::before, ::after{
      border-radius: 50%;
      width: 30%;
      height : 30%;
      border: 3px solid red;
}

2 个答案:

答案 0 :(得分:1)

逗号并不意味着以下元素是同一个选择器的子元素(这里[class * =" divclass - "])。 它只允许你链接选择器。

@see https://www.thoughtco.com/comma-in-css-selectors-3467052

以下是解决方案:



[class*="divclass-"]::before, 
[class*="divclass-"]::after {
      border-radius: 50%;
      width: 30%;
      height : 30%;
      border: 3px solid red;
      content: '';
}

<div class="divclass-1" style="height: 10px; width: 10px"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

考虑这种HTML结构,其中<div>包含子<span><p>。另一个<span><p>作为兄弟姐妹。

<div>
  <span>abc</span>
  <p>xyz</p>
</div>
<span>123</span>
<p>456</p>

例如,如果我们需要改变孩子的颜色,我们可以写你的路,

div span, p{
  color: red;
}

这个问题是,当样式全局应用于所有段落标记时,它也会改变兄弟<p>456</p>的颜色。

解决方案是像<span>一样遵循特异性并将选择器写为

div span, 
div p{
  color: red;
}

同样的规则也适用于伪元素。因此,解决方案是,

[class*="divclass-"]::before, 
[class*="divclass-"]::after{
  border-radius: 50%;
  width: 30%;
  height : 30%;
  border: 3px solid red;
}
  

注1

如果您正在使用SASS,您的语法可能是,

[class*="divclass-"]{
  &::before, 
  &::after{
    border-radius: 50%;
    width: 30%;
    height : 30%;
    border: 3px solid red;
  }
}
  

注2

beforeafter pesudo元素需要content属性。

希望这有帮助。