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

关于Tailwind CSS选择器peer-[:nth-of-type(3)_&]:block的含义及使用问题

关于Tailwind CSS peer-[:nth-of-type(3)_&]:block选择器的解析与问题解决

一、选择器含义拆解

peer-[:nth-of-type(3)_&]:block是Tailwind的自定义peer变体,核心逻辑如下:

  • peer-:基于兄弟节点中带有peer类的元素触发样式
  • [:nth-of-type(3)_&]:_是空格的转义,实际对应nth-of-type(3) &,其中&代表应用该类的当前元素(即你的div)
  • 最终生成的CSS选择器为:.peer:nth-of-type(3) ~ .peer-\[:nth-of-type\(3\)_&\]:block,意思是当当前元素是第3个peer类元素的后续兄弟时,为其设置display: block

二、当前HTML的问题

你的HTML结构中,div位于第一个peer元素之后,而第3个peer元素在div的后面。CSS的后续兄弟选择器~只能选择目标元素之后的兄弟,无法反向匹配,因此这个选择器根本不会作用到div上。此外,div默认设置了block类,即使选择器生效也看不出变化,因为本来就是显示状态。

三、修正方案

1. 调整HTML结构

将div移到第3个peer元素的后面,确保它是第3个peer的后续兄弟:

<input type="text" class="peer" placeholder="1"/>
<input type="text" class="peer" placeholder="2"/>
<input type="text" class="peer" placeholder="3"/>
<div class="hidden peer-[:nth-of-type(3)_&]:block">
  <p>fasdfasaf</p>
  <p>545235</p>
</div>

2. 关键修改点

  • 把div放到第3个peer之后,让后续兄弟选择器~能匹配到它
  • 将div的默认类从block改为hidden,这样当选择器触发时,才会从隐藏变为显示

3. 扩展:基于peer状态触发(如聚焦)

如果需要在第3个输入框获得焦点时才显示div,可修改类为peer-[:nth-of-type(3)_&:focus]:block,此时CSS会匹配第3个peer聚焦状态下的后续兄弟div,HTML结构保持上述调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:17:35