You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS选择器p~img:nth-of-type(2n)匹配异常问题求助

CSS选择器问题解析

核心原因::nth-of-type 的计数逻辑

:nth-of-type(n) 是从父元素的所有同类型子元素里计数,不是在你用p~img筛选出的子集里计数。

你的<section>父元素下,<img>的位置顺序是:

  • 第1张:image=5(在<p>之前)
  • 第2张:image=6(<p>之后第1张)
  • 第3张:image=7(<p>之后第2张)
  • 第4张:image=8(<p>之后第3张)

当你写p~img:nth-of-type(2n)时,2n会选中父元素里所有偶数位的<img>——也就是第2张(image=6)和第4张(image=8),这和你要选的<p>之后第2张(image=7)完全不是一回事。

为什么:not(:first-of-type)没用

p~img本身就已经排除了父元素里的第1张<img>(image=5),因为它只选<p>之后的<img>。而你筛选出来的image=6、7、8本来就都不是父元素的第1张<img>,所以加不加:not(:first-of-type)都不会改变选中结果,相当于白加。

为什么2n+1能选中目标

2n+1会选中父元素里所有奇数位的<img>——第1张(被p~img排除)和第3张(image=7),最终只有image=7符合条件,正好是你要的目标。

补充:如果要基于<p>之后的子集计数

如果你想针对<p>之后的<img>子集来选“每隔一张”(比如子集里的第2、4、6...张),可以用以下写法(适配更多场景):

p ~ img:nth-of-type(2n + 1) {
  border-radius: 10%;
}

这个规则在当前结构下会选中<p>之后的第2张(image=7),后续如果<p>之后新增更多<img>,也会持续选中子集里的偶数位(对应父元素的奇数位<img>)。

内容的提问来源于stack exchange,提问作者renakre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:15:31