如何编写CSS选择器:排除.jodit-wrapper类div内的所有ul元素
解决全局ul样式排除指定容器内元素的问题
你之前用 ul:not(.jodit-wrapper) 无效的原因很明确:这个选择器筛选的是自身没有jodit-wrapper类的ul元素,但你要排除的是被类为jodit-wrapper的div包裹的ul——这些ul本身并没有jodit-wrapper类,所以这个选择器根本起不到过滤作用,所有ul还是会被全局样式命中。
下面给你两种可行的实现方式:
方式一:全局设置+局部重置(推荐)
先保留你的全局ul样式,再单独给jodit-wrapper内的ul重置回默认样式,这种方法兼容性好,写法直观:
// 全局ul样式 ul { list-style: none; margin: 0; padding: 0; } // 重置.jodit-wrapper内的ul为默认样式 .jodit-wrapper ul { list-style: disc; // 根据需求换成decimal、circle等默认样式 margin: 1em 0; padding-left: 40px; }
方式二:使用:not选择器精准筛选
如果你不想写重置样式,可以用:not选择器排除所有被jodit-wrapper包含的ul,写法如下:
:not(.jodit-wrapper) ul { list-style: none; margin: 0; padding: 0; }
不过要注意,这种写法会忽略所有嵌套在jodit-wrapper里的ul,如果页面中有多层嵌套的复杂结构,可能需要给选择器加上body前缀来限制范围,避免意外影响其他元素。
内容的提问来源于stack exchange,提问作者Ash Archin
相关产品推荐
相关产品推荐

