首先自我介绍一下,我纯萌新,可以说是把掘金当成自己的云笔记吧,顺便可以练一下markdown的语法吧。我自己本身不是学的前端方面的专业,是在上学的时候,受到我一位瑞思拜的哥哥的熏陶,开启了我的前端生涯。怎么说呢,在毕业上班之前,我了解到的前端知识,基本上都是来自b站和我的大佬哥哥讲解,在上面看别人的线上教程,可能对有些学习能力强的人来说,网上的课程足够他成为一个有一定基础的前端工程师,但是在我这边,尤其是在第一次实习,遭受了社会的毒打之后才发现自己是个fw,然后现在就专门报了个班进修吧,希望半年之后能有个好结果吧
接下来就来讲讲这两个礼拜我看了旭神的css选择器世界的读后感吧,算是给这两个礼拜学习的一个总结
首先 第一章 我们来讲一下CSS选择器的优先级
CSS的优先级是有这很明显的等级制度,旭神将其分为了6个等级,其中4个等级是由CSS选择器决定,剩下的两个等级是由书写形式和特定语法决定。
首先我们要知道CSS有哪几种选择器(萌新分类)
一.基本选择器①ID选择器②类选择器③标签名选择器④全局选择器
二.组合选择器(后代元素选择器,子元素选择器,交集选择器,并集选择器)
三.伪类选择器
了解了CSS的选择器的类型之后,现在我们来讲选择器的优先级
首先第0级(等级最低,基本上可以被任何选择器设置的样式覆盖)
1.通配符选择器
2.选择符选择器 (例如+,~,>)
3.逻辑组合伪类(例如否定伪类:not()但是这些伪类本身并不影响css优先级,影响优先级的是()里面的选择器)
在此要强调一下只有逻辑组合伪类的优先级是0,其他的伪类优先级并不如此
第1级--标签选择器
第2级--类选择器,属性选择器,伪类
例如.foo{color:#666;},[foo]{color:#666;},:hover{color:#666}
第3级--ID选择器#foo{color:#888;}
第4级--style内联属性<span style = "color:#bfc;">优先级</span>
第5级
!important是优先级最高的,它可以重置JavaScript设置的样式,唯一我们推荐使用的场景就是使JavaScript的设置无效
讲完了css选择器的优先级,但是css选择器的优先级并不是这么简单的,有时我们会遇到一些复杂的选择器,我们还需要一套css选择器优先级的计算规则
总的来说:0级选择器---优先级数值+0
1级选择器---优先级数值+1
2级选择器---优先级数值+10
3级选择器---优先级数值+100
当我们能熟练计算css选择器优先级之后,可以顺带学习下如何增加一个CSS选择器优先级(经典来都来了)
在当我们之后实际开发时,难免会遇到需要增加CSS选择器优先级的地方
现在要求增加下面.foo{color:#333}类名选择器的权重,你会怎么做呢?
应该大部分人都会和我一样选择增加嵌套:.father.foo(),或者是增加一个标签选择器:div.foo()
但是旭神说!这些方法会增加耦合,降低可维护性,一旦哪天父元素类名发生变化,标签换了,样式就失效了。
于是旭神给了个既提高优先级,又不会增加耦合的方法:.foo.foo()
如果你不喜欢这种写法,借助必然会存在的属性选择器也是不错的方法例如:.foo[class]{}或#foo[id]{}