css的继承与层叠性和提升!important

在看了邵老师的课程后的小小总结

css的继承与层叠

1.继承

看百度上有个inherited from 中的属性就是继承来的一般属性值有文字描述类;line系列;text系列;font;color等

简单来说就是父亲有是属性那我就不用设置,最常见的是给body或html设置font-size来控制rem的字体大小等等

2.层叠性

当我们同时都选中了同一个标签元素的时候比如p标签,我们有不同的写法简单的直接p,或者在前面写前面的div,class,id之类的

例如(#main . content .content-left  p)这样的写法的,可能大家都知道要这样写,但大家可能不知道原理是什么?就是因为这个层叠性的原因

直接来规则:

1.选中的大于继承(权重为0也就相当于没有):比如要选一个p标签一个直接写到了p,而另一个只写到了包裹那个p标签的div上面,他们同时写了color的属性,那么就应用选中的color的颜色

2当同选中的时候看权重 (id > class > 标签) 例如(#main . content .content-left  p)的权重的值为1,2,1;那么如果有一个写的(#outer #main . content .content-left  p)的权重为2,2,1;这个时候都选中了看权重谁大应用谁的,如果权重还一样那就用应用下面的

3.两者都为继承的时候 :他们的权重都为0,那么看谁描述的离这个近就是谁例如:(#main . content .content-left  )和(#main . content )前者离这个p标签进所以应用前者的,当他们一样进就比权重 (id > class > 标签)看谁多了

注意在标签中class中的类的排序与重叠无关,只与在css中的顺序有关,当什么都一样的时候以后面出现我为主

所以写法要注意最好是(#main . content .content-left  p)当要这个p中的类的时候有人会这样写(#main . content .content-left  .class);但这样写不如(#main . content .content-left  p.class)中的这个.点代表且(都存在也就是说有是p标签,他的类还是.class),这样的写法可读性好

!important

不可以乱用,但可以提升原子类(比如.font18px{font-size:18px}这样的放开些的类),写在一个属性值的分号之前。

注意:important不影响继承性,不影响就近原则,只可以提升权重,也就是说当2值都为选中的时候比权重,但当我有!important的时候不够我的权重是不是低,都应用我的属性,当一个没有选中的写了!important也没用,继承的权重永远为0(根本没有所以无法提升),所以才会在比如一下框架中(bootstrap)中的类中有对原子类加!important的使用这样在都为选中的情况(甚至原先的是继承过来权重为0)下都会用原子类的属性,

2018/12/20补充

行内样式style=""的权重大于id,但小于!important

好了以上是我的总结如果有不同已经,欢迎与我讨论,谢谢

猜你喜欢

转载自blog.csdn.net/qq_39148344/article/details/85064882