特性:子元素有默认继承父元素样式的特点
可以继承的常见属性有:
1、color
2、font-style、font-weight、font-size、font-family
3、text-indent、text-align
4、line-height
5.....
例如:
<style> .father{ color: red; } </style> </head> <body> <div class="father"> 父亲 <div class="son"> 儿子 </div> </div> </body>
注意点:可以通过调试工具判断样式是否可以继承
常见的应用场景:
1、可以直接给ul设置list-style:none属性。从而去除列表默认的小圆点样式。
2、直接给body标签设置统一的font-size,从而统一不同浏览器默认文字大小。
继承失效的情况
1、如果元素有浏览器设置的默认样式,此时继承性仍然存在,但是优先显示浏览器默认的样式。
2、a标签的color会继承失效。
其实是有继承的,只不过是优先使用了浏览器默认的样式。
3、h系列标签的font-size会继承无效。
原因同上
4、div的高度不能继承,但是宽度有类似于继承的效果。
特性:1、给同一个标签设置不同的样式---此时样式会层叠叠加--会共同作用在标签上。
2、给同一个标签设置相同的样式---此时样式会层叠覆盖---最终写在最后的样式会生效。
注意点:当样式冲突时,只有当选择器优先级相同时,才能通过层叠性判断结果。
能够计算CSS权重,并解决CSS样式冲突问题
特性:不同选择器有不同的优先级,优先级高的选择器样式会覆盖优先级低的选择器样式。
优先级公式:继承<通配符选择器<标签选择器<类选择器<id选择器<行内样式<!important
注意点:
1、!important写在属性值的后面,分号的前面
2、!important不能提升继承的优先级,只要是继承优先级最低
3、实际开发中不建议使用!important
场景:如果是符合选择器,此时需要通过权重叠加计算方法,判断最终哪个选择器优先级最高会生效。
公式(每一级之间不存在进位,四个是分别对应的)
第一级 第二级 第三极 第四级
(0, 0 , 0 ,0)
行内样式个数 id选择器个数 类选择器个数 标签选择器个数
比较规则:
1、先比较第一级数字,如果比较出来了,之后的统统不看。
2、如果第一级数字相同,此时再比较第二级数字,如果比较出来了。之后的统统不看。
3、。。。。
4、如果最终所有数字都相同,表示优先级相同,则比较层叠性(谁写在下面,谁说了算)
注意点:如果!important不是继承,则权重最高。
<style> /*0,1,0,1*/ div #one{ color: skyblue; } /*0,0,2,0*/ .father .son{ color: skyblue; } /* 0,0,1,1*/ .father p{ color: purple; } /* 0,0,0,2*/ div p{ color: pink; } </style> </head> <body> <div class="father"> <p class="son" id="one">我是个标签</p> </div> </body>
一般解题步骤
1、先判断选择器是否能直接选中标签,如果不能直接选中---->是继承,优先级最低----->直接pass
2、通过权重计算公式,判断谁的权重最高。