微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何区分CSS中的每个其他元素?

如何解决如何区分CSS中的每个其他元素?

请帮助我解决此CSS样式问题。

我有多个div标签,类为“ a”或“ b”。 而且我想区分每个带有“ a”类的第二个div标签的css样式,而不关心“ b”。

.a:nth-of-type(2n) {
  background-color: chocolate;
}
<div class="parent">
  <div class="a">class a</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="a">class a</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="b">class b</div>
</div>

但是它不起作用,并且我的CSS总是在不关心.a或.b的情况下工作。 这是执行结果。

screen capture

解决方法

这不是nth-child的工作方式,但是您可以使用~选择器来过滤第二次出现的类,然后为后面的任何其他操作重置CSS。

如果您的想法是每次选择一个班级,则每次从两个外观中选择一个 ,例如:nth-of-class(2n) (不可用)然后将需要Javascript

例如,将第二个.a.b类放在单亲的流中,另一个类或元素是否介于两者之间。

div .a,div .b,.a~.a~.a,.b~.b~.b {
  background: #5f9ea0
}

.a~.a{
  background-color: chocolate;
}

.b~.b {
  background-color: orange;/* to avoid confusion ... */
}


/* demo purpose */

.parent {
  display: grid;
  grid-template-columns: repeat(auto-fill,minmax(5em,1fr));
  grid-auto-rows: 4em;
  grid-gap: 1em;
}

div {
  display: flex;
  align-items: center;
  justify-content: center;
  height:100%;
}
<div class="parent">
  <div class="a">class a</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="a">class a</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="b">class b</div>
</div>

您的选择器:.a:nth-of-type(2n)并未在of-type上进行过滤,因为它仅获得选择器的类,它将匹配流中的任何2n标记,并且如果也具有CSS规则,则将应用CSS规则.a类。

,

第n个子伪类需要正确的参数。

自变量应采用+ b的形式,以匹配从b开始的所有ath子代。

a和b都是可选整数,都可以为零或负数。

如果a为零,则没有“ everth ath child”子句。 如果a为负,则从b开始向后进行匹配。 如果b为零或负数,则可以使用正数b写等效表达式,例如4n + 0与4n + 4相同。同样,4n-1与4n + 3相同。

您还可以看到:http://css-tricks.com/how-nth-child-works/

,

这是常见的误解 不幸的是,:nth-child:nth-of-type css选择器不会查看"class"或其他任何东西进行计数。

他们只看其中一个

  • (1)所有元素,或
  • (2)某个“类型”的所有元素(不是类,不是属性,仅是元素的类型-div或li等)。

因此,如果您不知道确切的HTML结构,则无法使用纯CSS跳过它。 而且,如果需要这样做,可以使用Javascript。

我已经附加了基于Javascript的实现。

const elements = document.getElementsByClassName('a');

for (let index = 1; index < elements.length; index += 2) {
  elements[index].classList += " different";
}
.different {
  background-color: chocolate;
}
<div class="parent">
  <div class="a">class a</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="a">class a</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="a">class a</div>
  <div class="b">class b</div>
  <div class="b">class b</div>
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?