如何取消css的所有继承

html-css020

如何取消css的所有继承,第1张

可以使用 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

第一点. 现在没有办法,都是从上到下读取的。

第二点.怎么解决呢.

如果同样的名称 是会继承传递的

只有想办法 class 加上id

比如 <div class="top" id="head"></div>

这样区别开来

或者

2.

<a class="top head"></a>

<a class="top body"></a>

<a class="top foot"></a>

这样 只给top共同属性~

然后不一样的属性 标注在 head body 和foot上面 就不会冲突了~

在div里给它加上一个类,给新加的类写样式。

在CSS中,继承是一种非常自然的行为,我们甚至不需要考虑是否能够这样去做,但是继承也有其局限性。

首先,有些属性是不能继承的。这没有任何原因,只是因为它就是这么设置的。举个例子来说:border属性,大家都知道,border属性是用来设置元素的边框的,它就没有继承性。如下图所示,如果继承了边框属性,那么文档看起来就会很奇怪,除非采取另外的措施关掉边框的继承属性。

多数边框类属性,比如象Padding(补白),Margin(边界),背景和边框的属性都是不能继承的。

扩展资料

CSS中的样式覆盖原则:

规则一:由于继承而发生样式冲突时,最近祖先获胜(最近原则)。

strong分别从body和p中继承了color属性,但是由于p在继承树上离strong更近,因此strong中的文字最终继承p的蓝色。

规则二:继承的样式和直接指定的样式冲突时,直接指定的样式获胜(最直接原则)。

strong {color:red}

那么根据规则二,strong中的文字最终显示为红色。

规则三:直接指定的样式发生冲突时,样式权值高者获胜。

样式的权值取决于样式的选择器,权值定义如下表。

css选择器 权值

标签选择器 1

类选择器 10

ID选择器 100

内联样式 1000

伪元素(:first-child等) 1

伪类(:link等) 10

可以看到,内联样式的权值>>ID选择器>>类选择器>>标签选择器,除此以外,后代选择器的权值为每项权值之和,比如”#nav .current a”的权值为100 + 10 + 1 = 111。