CSS Cascading and Inheritance Level 3 引入了the all shorthand property 和the unset keyword,它们一起可以让您方便地实现这一目标。
例如,如果作者在元素上指定all: initial,它将
阻止所有继承并重置所有属性,就像没有规则一样
出现在级联的作者、用户或用户代理级别。
这对于包含在
页面,它不希望继承外部页面的样式。
但是请注意,应用于该元素的任何“默认”样式(例如
例如,例如display: block 来自块元素的 UA 样式表,例如
因为<div>) 也会被吹走。
您需要将 all: initial 应用于您的 div 并将 all: unset 应用于其后代:
#mydiv {
all: initial; /* blocking inheritance for all properties */
}
#mydiv * {
all: unset; /* allowing inheritance within #mydiv */
}
您可能希望在您的 div 上使用一个类而不是一个 id,这样您编写的任何为其后代设置样式的规则都不必匹配或超过此规则中使用的高特异性。
为了安全起见,您可能还想阻止潜在伪元素后代的样式:
#mydiv::before,
#mydiv::after,
#mydiv *::before,
#mydiv *::after {
all: unset;
}
或者,为了更广泛的浏览器支持,您可以手动尝试通过设置所有已知的 CSS 属性来执行 all 所做的事情(不要忘记前缀版本):
#mydiv {
/*
* using initial for all properties
* to totally block inheritance
*/
align-content: initial;
align-items: initial;
align-self: initial;
alignment-baseline: initial;
animation: initial;
backface-visibility: initial;
background: initial;
...
}
#mydiv::before,
#mydiv::after,
#mydiv *,
#mydiv *::before,
#mydiv *::after {
/*
* using inherit for normally heritable properties,
* and initial for the others, as unset does
*/
align-content: initial;
align-items: initial;
align-self: initial;
...
color: inherit;
...
}
您可以鼓励浏览器支持all 速记属性,并通过以下问题链接跟踪其采用情况:
all 速记属性的最新浏览器支持信息可在here 获得。