CSS三大特性
Css三大特性
继承性
特性:子元素有默认继承父元素样式的特点
可以继承的常见属性有:
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、通过权重计算公式,判断谁的权重最高。