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

CSS中能否通过:has选择器为包含无效输入的元素设置伪元素?

这种实现方式不可行,问题出在CSS选择器的顺序上

你的写法把:has()伪类放在了::after伪元素后面,这相当于在找**.InputElement的::after伪元素里包含input:invalid**的情况,但伪元素本身是附加在.InputElement上的虚拟元素,根本不会有input子元素,所以完全匹配不到目标。

正确的写法应该是先通过:has()选中包含无效input的.InputElement父容器,再给这个容器添加::after伪元素:

.InputElement:has(input:invalid)::after {
  content: 'Hello world';
  color: red;
  /* 建议补充定位样式,避免伪元素位置异常 */
  display: block;
  margin-top: 4px;
}

另外需要注意::has()选择器目前在Chrome、Edge、Safari等主流浏览器已支持,但Firefox默认未开启,需要手动启用layout.css.has-selector.enabled配置项才能生效。

你的React组件代码不需要修改,保持原样即可:

const Input = (props: InputProps) => (
  <div className={classes.InputElement}>
    <input {...props} />
  </div>
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:10:40