css nth-of-type问题

请教个问题,请看代码:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style type="text/css">
    span {
      display: block;
    }

    /**
      *  这是父元素的第2n个span,同时有target class。
      */
    .target:nth-of-type(2n) {
      background: lightblue;
    }

    /**
      *  父元素的第2n个元素,同时有target class。
      */
    /* .target:nth-child(2n) {
      background: pink;
    } */
  </style>
</head>

<body>
  <div>
    <span class="target">target1</span>
    <span>干扰1</span>
    <p>干扰2</p>
    <span class="target">target2</span>
    <span>干扰3</span>
    <span class="target">target3</span>
    <span class="target">target4</span>
    <span class="target">target5</span>
  </div>
</body>

</html>

目标是:选中第2n个具有.target类名的任意元素,也就是:target2、target4

如果用.target:nth-of-type(2n),这个选择器表示这是父元素的第2n个span,同时有target class,target2是第3个span,所以没有被选中。

如果用.target:nth-child(2n),这个选择器表示父元素的第2n个元素,同时有target class。导致父元素的第6、8个元素target3、target5被选中,第7个元素target4没有被选中。

不动html,只用css的话,是否有其他方法?

阅读 1.6k
1 个回答

首先说 不动html,只用css的话,没有解决方案
因为你选择的内容是 按照标签里的文字内容进行选择,而css选择器没法匹配标签里的文本信息
既然你想匹配标签内容为target[2n]的元素,为什么不直接对其span标签添加一个统一的类名呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题