失踪人口冒个泡css
入门学习的时候必定就据说过这些概念,在菜鸟教程之类的网站上也确定学习过,好比类的优先级为 十、标签的优先级为 1,这些都是辅助咱们记忆的,下面就来讲一说容易出错的点。html
.top {
margin: 10px;
}
[class] {
margin: 20px;
}
复制代码
这里输出的margin
为多少?学习
答案是20px
,对于类和属性选择器以及伪类优先级是一致的,固然这个例子只是帮你温习的,再来看一个优化
/*第一条*/
body [class] {
color: #666;
}
/*第二条*/
html:not([dir]) {
color: red;
}
复制代码
这里两条属性的优先级相等么?网站
答案是相等的,对于:not
这样的逻辑组合伪类影响优先级的是里面的元素,上面第一条是一个标签加上属性选择器优先级为 11,第二条 html 标签加上属性选择器优先级也是 11。spa
上面举了一个例子最终颜色生效为red
,这是由于后来居上的原则,不过注意这个后来居上说的是总体文档而言。code
<link rel="stylesheet" href="a.css" /> <link rel="stylesheet" href="b.css" />
复制代码
a.csshtm
body .foo {
color: red;
}
复制代码
b.css教程
html .foo {
color: #666;
}
复制代码
最终color
的值为#666
,同时还提醒一下 css 最终生效并非看元素的距离的远近,而是根据优先级和位置,好比上面的 body 确定比 html 离得近,可是由于后来居上因此并无生效。文档
在开头说了方便记忆咱们会给类和标签之类的优先级添加上数字,可是若是你想用数量多就覆盖高一层级的是不可能的
.a {
color: red;
}
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a,
a {
color: #666;
}
复制代码
输出结果仍是红色。
传统添加优先级咱们可能会经过给标签添加 id 或者继续嵌套来实现,不过这样作确定不合适由于后面在想修改可能就须要使用style
或者important
了,下面就说下两个小技巧
.a[class] {
color: red;
}
.a {
color: #666;
}
复制代码
.a.a {
color: red;
}
.a {
color: #666;
}
复制代码
说一点新手噩梦,css 的匹配顺序是从右往左,因此嵌套太多层的 css 语句就不要在写了,通常而言 id 选择器和类选择器的解析最快,标签选择器的速度很慢,因此在项目中不要嵌入太多的标签选择器有利于项目的优化。
说这个首先要说一下 html 是否区分大小写,html 对于标签和属性是不区分大小写的,而对属性值则是区分的,css 与 html 保持一致
<style> p { color: #666; } [CLASS] { color: red; } .foo { color: white; } </style>
<p class="FOO">hello wrold</p>
复制代码
这里 p 的 color
为 red
,说明了标签和属性选择器不区分大小写,而对于 class 则是区分的。