css not选择器

1.我现在有一个弹层,里面有一些输入框 如果判断条件不通过输入框就会变成红色,
图片描述

但是弹层里面也包含弹层 如果直接点击确定按钮 弹层里面的弹层输入框也会变成红色
图片描述

所以我 .is-error:not(.userSelectModal) input{ border: solid 1px #D90000;}这样写 但是不生效 假如去掉input是可以的,这是什么原因造成的呢?

ps:代码结构图片描述

阅读 4.4k
3 个回答

所以我 .is-error:not(.userSelectModal) input{ border: solid 1px #D90000;}这样写 但是不生效 假如去掉input是可以的,这是什么原因造成的呢?

空一格就是包含选择符了(即E F这种形式的),命中的是E后代的所有F元素。按你的这个思路,input应该是放在前边的,变成:

input.is-error:not(.userSelectModal) {border: solid 1px #D90000;}

应该就没问题了。

你的is-error这个类是添加到input上面的吧??

题主用的选择器not,是排除选择器,意思是除了被选择器选中的元素之外的元素,会添加上后面的样式。
.is-error:not(.userSelectModal) input指的是有.is-error这个名字但是没有.userSelectModal这个名字的input元素(注意,两者要同时满足!!),所以问题来了,你的.userSelectModal元素并没有.is-error这个名,这只是这个选择器的问题。希望我的回答对题并且对你有帮助,谢谢!!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题