PANG
首页
学习笔记
前端技术
生活感悟
Golang
联系我
css样式加载顺序及覆盖顺序深入理解
前端技术
2023/09/07
CSS
复制代码
代码如下:
{
height: 100%;
width: 200;
position: absolute;
left: 0;
border: solid 2 #EEE;
}
.current_block {
border: solid 2 #AE0;
}
查找一些教材中(w3schools等),只说css的顺序是“元素上的style” > “文件头上的style元素” >“外部样式文件”,但对于样式文件中的多个相同样式的优先级怎样排列,没有详细说明。经过测试和继续搜索,得知优先级如下排列:
1. 样式表的元素选择器选择越精确,则其中的样式优先级越高:
id选择器指定的样式 > 类选择器指定的样式 > 元素类型选择器指定的样式
所以上例中,#navigator的样式优先级大于.current_block的优先级,即使.current_block是最新添加的,也不起作用。
2. 对于相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高
注意,这里是样式表文件中越靠后的优先级越高,而不是在元素class出现的顺序。比如.class2 在样式表中出现在.class1之后:
复制代码
代码如下:
.class1 {
color: black;
}
.class2 {
color: red;
}
而某个元素指定class时采用 class=\"class2 class1\"这种方式指定,此时虽然class1在元素中指定时排在class2的后面,但因为在样式表文件中class1处于class2前面,此时仍然是class2的优先级更高,color的属性为red,而非black。
3. 如果要让某个样式的优先级变高,可以使用!important来指定:
复制代码
代码如下:
.class1 {
color: black !important;
}
.class2 {
color: red;
}
此时class将使用black,而非red。
对于一开始遇到的问题,有两种解决方案:
1. 将border从#navigator中拿出来,放到一个class .block中,而.block放到.current_block之前:
复制代码
代码如下:
#navigator {
height: 100%;
width: 200;
position: absolute;
left: 0;
}
.block {
border: solid 2 #EEE;
}
.current_block {
border: solid 2 #AE0;
}
需要默认为#navigator元素指定class=\"block\"
2. 使用!important:
复制代码
代码如下:
#navigator {
height: 100%;
width: 200;
position: absolute;
left: 0;
border: solid 2 #EEE;
}
.current_block {
border: solid 2 #AE0 !important;
}
此时无需作任何其他改动即可生效。可见第二种方案更简单一些。
本文地址:https://www.stayed.cn/item/19122
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请
联系我
微信
QQ好友
QQ空间
腾讯微博
新浪微博
人人网
我的博客
人生若只如初见,何事秋风悲画扇。
我的标签
框架(11)
jQuery(58)
WordPress(47)
Hbuilder(1)
PHP(4727)
NoSQL(3)
MYSQL(1173)
微信小程序(6)
JavaScript(8215)
HTML5(6)
前端设计(20)
网络安全(6)
微信支付(2)
连接池(1)
IOS(410)
HTML(671)
CSS(1220)
meta(1)
swiper(1)
Nginx(8)
移动端(4)
CentOS(7)
node.js(7)
windows(4)
IIS(3)
Linux(1450)
Bootstrap(1)
Rewrite(1)
Vue(81)
ThinkPHP(11)
Redis(6)
SEO(2)
Angular(3)
Android(2321)
ListView(2)
C#(1513)
Oracle(346)
MongoDB(111)
MSSQL(446)
Java(1572)
C++(863)
Golang(125)
Canal(4)
ES(2)
Kafka(2)
Prometheus(1)
.NET(1094)
SqLite(16)
AJAX(266)
Mac(499)
JSP(251)
PostgreSQL(23)
SSL(2)
JS(73)
Laravel(18)
安全(1)
C#.Net(2)
ES6(28)
Excel(40)
Word(53)
PHP8(2)
GIT(6)
VSCode(6)
Python(5)
React(31)
phpstorm(4)
Node(6)
前端问答(12)
windows运维(1)
phpMyAdmin(3)
SQL(1)
Access(1)
Java基础(1)
Discuz(3)
帝国CMS(10)
ECShop(5)
DEDECMS(34)
PHPCMS(5)
YII(1)
Docker(1)
composer(1)
数字人技术(2)
随笔档案
2024-02(2)
2023-06(1)
2023-05(1)
2023-04(14)
2023-03(3)
2023-01(6)
2022-12(5)
2022-11(5)
2022-07(2)
2022-06(4)
2022-05(3)
2022-03(1)
2021-12(6)
2021-11(1)
2021-10(3)
2021-09(5)
2021-07(5)
2021-02(2)
2021-01(7)
2020-12(18)
2020-11(14)
2020-10(12)
2020-09(10)
2020-08(22)
2020-07(2)
2020-06(1)
2020-04(5)
2020-03(9)
2020-02(7)
2020-01(9)
2019-12(8)
2019-11(10)
2019-10(11)
2019-09(17)
2019-08(16)
2019-07(6)
2019-06(3)
2019-04(1)
2019-03(8)
2019-02(5)
2019-01(1)
2018-11(2)
2018-10(3)
2018-09(1)
2018-08(3)
2018-07(3)
2018-06(7)
2018-04(4)
2018-03(5)
2018-02(4)
2018-01(22)
2017-12(3)
2017-11(5)
2017-10(15)
2017-09(26)
2017-08(1)
2017-07(3)