有办法去掉从父级元素继承下来的 CSS 样式吗

html-css05

有办法去掉从父级元素继承下来的 CSS 样式吗,第1张

w3c标准中可以继承的css样式是不能够设置不继承的。

具体解决方案:

1、单独设置子元素样式,覆盖父元素继承下来的样式。

2、合理设置外层html元素的css样式,避免为后续元素带来重复的设置和不利因素。

3、公用可复用的组件,公用可复用的css样式

可以使用 CSS 的 all 属性。但是目前IE和Edge浏览器还没有任何版本兼容这个属性。所以实际开发中,如果需要兼容IE或者Edge的话,不能使用。同时安卓4.4以及以下,Safari9 的部分版本也不支持。

还是简单的说下用法:

all 属性可以重置选中元素的属性(除了direction和unicode-bidi两个属性)

all 属性在Cascading and Inheritance Level 3 规范中有三个可选的值

initial : 重置所有CSS属性为初始值

inherit : 元素继承所有服元素的CSS属性,即使有些属性原本不是可继承的

unset : 元素继承服元素所有可继承的属性

同时在 Cascading and Inheritance Level 4 规范草案中增加了 revert 值。由于还仅仅是草案,所以这里不细说,详情可以异步下面的链接。

W3C 相关标准内容:

https://www.w3.org/TR/css-cascade-3/#defaulting

https://drafts.csswg.org/css-cascade/#all-shorthand

你好 你的这个问题 我只能做如下解释

第一 如果你写的是类样式 比如 li{color:red}

那么所有的li都会 是红色字 不要试图去清除掉 因为继承样式是默认的 无法清除 就好像你无法改变代码的执行顺序默认从上至下一样 除非你加if判断等来控制 所以 答案是无法清除

除非你能够改变代码默认执行顺序 从下至上 解析 不过这是不可能的 因为代码不是你发明的 浏览器解析方式 更加不可能取决于你

第二 我们如何解决此类问题 比如说 我们可以规定区域

假设 2个div 分别上下两区域 分别 id=a id=b

你如果只想要id=a 部分的li 为红色 那么写法如下

#a li{color:red} 那么 在id=b区域中的li则不受影响

我们只能够通过这种 尽量规定使用区域 来解决此类问题

洗完能帮到你 谢谢