CSS中:not(style) ~ :not(style)选择器解析及MUI样式覆盖方法
关于MUI中
:not(style) ~ :not(style)选择器的解释 选择器各部分含义
:not(style):CSS否定伪类,作用是排除<style>标签。MUI组件内部会自动注入内联<style>标签作为子元素,这个伪类就是为了跳过这些样式标签,只匹配实际的内容子元素。>:子组合器,仅匹配目标元素的直接子元素,不会选中深层后代。~:后续兄弟组合器,匹配所有跟在指定元素之后的同级元素(只要它们共享同一个父元素)。
整体作用
把这些部分组合起来,.css-1rb8ayf-MuiStack-root > :not(style) ~ :not(style)的实际效果是:
给MUI Stack组件根元素下的所有非<style>直接子元素,且这些子元素前面还有另一个非<style>直接子元素添加上margin-top:40px样式。说白了就是给Stack里的内容子元素自动添加上下间距,同时忽略MUI自己生成的<style>标签,避免给无效元素加间距。
为什么需要!important覆盖
这个自动生成的选择器优先级比你直接给Stack根元素加的样式高:它包含了类选择器+两个伪类选择器,而你的自定义样式只是单纯的类选择器。按照CSS优先级规则,前者权重更高,所以直接写margin-top:0会被覆盖,必须用!important强制提升优先级才能生效。
内容的提问来源于stack exchange,提问作者EBDS
相关产品推荐
相关产品推荐

