在css中某些样式是具有继承性的,那么什么是继承呢?官方解释,继承是一种规则,它允许样式不仅应用于特定的html标签元素,而且应用于其后代元素。
如你父亲是双眼皮,你母亲是单眼皮,那么你是双眼皮,那么你就是继承了父亲的双眼皮。
拿到我们实际的代码中应用,代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>继承性</title> <style type="text/css"> div{ color: red; } </style> </head> <body> <div> 我是你们<span>阿豪</span>,这里是<span>学习资料专栏</span> </div> </body> </html>那么该颜色不仅仅应用在了div标签,还应用与div标签中的所有子元素(包括div中的文本和span包含的文本)文本。
注意:某些属性是可以继承下来的,比如常见的color、font系列的、text-*系列的等等。
但有些属性是不可以继承下来的,比如border:1px solid green;
给div设置border:1px solid green;之后发现,div有条实心边框线,但是子元素span包含的文本根本就没起到作用。
网站应用:比如我们在去设计网站的时候,网站统一的字体颜色为gray,字体大小为14px。那么我们可以很好的利用css的继承性来实现此效果。
代码如下:
body{ color:gray; font-size:14px; }在之前我们学习了那么多的选择器,那么大家是否有疑问呢?比如,如果我对同一个元素来设置了不同的css样式代码之后,那么元素会启用哪个css样式呢?以我过来人的经验,学到这里的同学,大部分都认为是启用最后面编写的。那么我们接下来看个案例:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> p{ color:red; } #wrap{ color:green; } .box{ color:yellow; } </style> </head> <body> <p class='box' id="wrap"> 我是小阿豪,猜猜我是什么颜色 </p> </body> </html>效果展示:
我是小阿豪,猜猜我是什么颜色
会发现结果是绿色的,这是因为什么呢?因为浏览器是根据权值来判断使用哪种css样式的,权值高的它的优先级会越高,就会呈现那种css样式,
css权值的规则:
有一个这样的结构:
<div class='wrap1' id='box1'> <div class="wrap2" id="box2"> <p class='active'>MJJ</p> </div> </div>举几个例子看看他们的权值:
p{color:gray;}/*权值为1*/ div div p{color:yellow;}/*权值为1+1+1=3*/ .active{color:red;}/*权值10*/ div .active{color:black;}/*权值为11*/ div div .active{color:blue;}/*权值为12*/ .wrap #box2 .active{color:purple;}/*权值为120*/ #box1 #box2 .active{color:green;}/*权值为210*/由此可以看出,其实对于权值的计算来说,首先它是不进位的,对于使用的选择器我们无非就是在数数,数选择器的数量(按照顺序来,先是id再是class,再是元素),比如:
/*权值为 1 1 1*/ #box1 .wrap2 div{ color:red; }注意:继承来的属性也有权值,不过它的权值非常低,有的文档提出它只有0.1,所以可以理解为继承的权值最低。
我们在做网页代码时,有些特殊的情况需要为某些样式设置具有最高权值,怎么办?比如我们知道内联样式的权值是1000,比较大,那么我们可以使用!important来解决。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>!important的使用</title> <style type="text/css"> div{ color:green !important; } </style> </head> <body> <div id="box" style="color:red;"> <span>小阿豪</span> </div> </body> </html>注意:!important要写在分号的前面
效果发现文本变为了绿色。但是使用!important是一个坏习惯,应该尽量避免,因为这严重破坏了样式表中固有的权值比较规则,使得在调试bug变得更加困难。当两条相互冲突的带有!important规则作用与同一个标签,那么拥有最大优先级的将会被采用。
什么情况下可以使用!important?
第一种
你的网站上有一个设计了全站样式的css文件同时你或者你的小伙伴写了一些很差的内联样式第二种
#box p { color: blue; } p.awesome { color: red; }