css - :not() 中的两个类似乎在 Safari 中不起作用,但在 Firefox 和 Chrome 中起作用
问题描述
我正在使用这个片段,它适用于 Firefox 和 Chrome,但不适用于 Safari。为什么?
.column:not(.custom.no-edit)
如果我将其更改为此它似乎可以工作,但这不会产生相同的效果吗?如果我的想法是正确的,如果两个类都存在,第一个会给出 true,而如果有任何类都存在,第二个会给出 true?
.column:not(.custom):not(.no-edit)
解决方案
考虑以下 HTML 片段:
<div class="column"></div>
<div class="column custom"></div>
<div class="column no-edit"></div>
<div class="column custom no-edit"></div>
选择器
.column:not(.custom.no-edit)
是第 4 级语法,它匹配.column
属性中没有“自定义”和“无编辑”的元素class
。这意味着.column
具有一个或另一个的元素将匹配。片段中的所有前三个元素都将匹配——只有第四个不匹配。
在第 3 级实现中,语法被视为无效并被忽略,导致片段中没有任何元素与选择器匹配。
Firefox 和 Chrome 理解的 3 级等效项是
.column:not(.custom), .column:not(.no-edit)
选择器
.column:not(.custom):not(.no-edit)
是 3 级语法,匹配.column
属性中没有“自定义”或“无编辑”的元素class
。只有片段中的第一个元素会匹配这个选择器。4级等效是
.column:not(.custom, .no-edit)
希望这可以帮助您了解您期望的结果和您实际获得的结果。
也可以看看:
推荐阅读
- apache-spark - Spark 中 bigint 的兼容数据类型是什么?我们如何将 bigint 转换为 spark 兼容的数据类型?
- c# - 验证值是否存在于具有相同键名称的 Json 数组中
- excel - 比较单元格的值
- maven - CAS Maven Overlay 和 Spring Boot 不能一起工作
- c# - CefSharp 忽略使用 RequestContext 设置的首选项(拼写检查)
- c# - 如何使用包含特殊字符 $ 的 EF.Core Database First 搭建表
- javascript - ExtJS:将模型列转换为网格中的行
- mysql - SQL,按一列与一列不同的列分组
- amazon-web-services - AWS Lex AMAZON.DATE 槽类型以美国格式解析日期
- for-loop - Java 使用 For 循环