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

Tailwind/纯CSS/SCSS中多类条件判断的样式实现咨询

问题描述

我当前使用class="hover:[&:not(.ng-invalid)]:border-gray-500",该样式会在鼠标悬停输入框且输入框未附加.ng-invalid类时,为输入框边框添加灰色。
我需要扩展逻辑:仅当输入框未附加.ng-invalid类且已附加.ng-dirty类时,鼠标悬停才添加该灰色边框,尝试了类似写法:

class="hover:[&:not(.ng-invalid)]:[&:has(.ng-dirty)]:border-gray-500"

请问替换[&:has(.ng-dirty)]的正确写法是什么?同时请提供可行的纯CSS解决方案。

Tailwind CSS 解决方案

不需要使用:has()选择器,直接将两个条件合并到同一个&选择器组合中即可,正确写法如下:

class="hover:[&.ng-dirty:not(.ng-invalid)]:border-gray-500"

这里的[&.ng-dirty:not(.ng-invalid)]表示当前元素同时满足两个条件:拥有.ng-dirty类,且没有.ng-invalid类,配合hover:前缀就能实现目标悬停样式。

纯CSS 解决方案

直接编写CSS规则,针对符合条件的元素设置悬停状态的边框样式:

/* 匹配Tailwind border-gray-500的默认色值#6b7280 */
.ng-dirty:not(.ng-invalid):hover {
  border-color: #6b7280;
}

如果项目中自定义了gray-500的色值,替换对应的颜色代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:17:39