请教个问题,请看代码:
<!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的话,是否有其他方法?
首先说 不动html,只用css的话,没有解决方案
因为你选择的内容是 按照标签里的文字内容进行选择,而css选择器没法匹配标签里的文本信息
既然你想匹配标签内容为
target[2n]
的元素,为什么不直接对其span
标签添加一个统一的类名呢?