我试图在Tailwind CSS中使用条件类和peer
类来有条件地显示或隐藏错误消息。我在Tailwind CSS文档中发现了一个代码块,它以特定的顺序使用了block
和hidden
类,但我很困惑为什么hidden
类没有像我预期的那样覆盖block
类。
我在Tailwind CSS文档中遇到了以下HTML代码,它使用peer
类以及条件block
和hidden
类来根据输入元素的状态显示或隐藏错误消息:
<form>
<label for="email">Email:</label>
<input id="email" name="email" type="email" class="is-dirty peer" required />
<div class="peer-[.is-dirty]:peer-required:block hidden">
This field is required.
</div>
<!-- ... -->
</form>
根据我的理解,这个代码块创建了一个新类,如果元素具有is-dirty
类和required
属性,则将block
类应用于元素,然后应用hidden
类。
然而,我很困惑为什么hidden
类没有像我预期的那样覆盖block
类。具体地说,我希望如果输入元素不是脏的和必需的,错误消息“This field is required.”会被隐藏,因为hidden
类出现在规则中的条件block
类之后。
所以我的问题是
*为什么隐藏类没有像我在此规则中期望的那样覆盖块类?
*peer-[.is-dirty]:peer-required:block hidden
规则中block
和hidden
类的顺序重要吗?如果重要,它如何影响规则的行为?
如果您能提供任何见解或解释,我将不胜感激。谢谢!
注意:此代码块来自Tailwind CSS文档。
1条答案
按热度按时间thtygnil1#
为什么隐藏类没有像我在这个规则中期望的那样覆盖块类?
对于具有不同specificity的CSS规则,具有更高特异性的规则将优先:
.block.block
规则具有更高的特异性,因此将覆盖.hidden
规则将这个概念扩展到Tailwind,从
peer-[.is-dirty]:peer-required:block
类生成的CSS规则将比hidden
类具有更高的特异性:因此,只要
peer-[.is-dirty]:peer-required:block
匹配前一个类,peer-[.is-dirty]:peer-required:block
将始终覆盖hidden
。peer-[.is-dirty]:peer-required:block hidden
规则中block
和hidden
类的顺序是否重要?如果重要,它如何影响规则的行为?peer-[.is-dirty]:peer-required:block hidden
不是一个单一的“规则”,而是两个不同的类,peer-[.is-dirty]:peer-required:block
和hidden
。它们的顺序在任何源代码中声明时都无关紧要。