持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
-
css2.1中的选择器:
-
基础选择器:标签选择器、id选择器、类选择器、通配符选择器
-
高级选择器:后代选择器、交集选择器、并集选择器
-
-
标签选择器_命名规则:必须以字母开头,后面可以有字母、数字、下划线、横线,严格区分大小写。每个id属性值必须是唯一的,不能与其他的id同名。
-
注意:如果希望多个标签设置相同的样式,使用id选择器的话,必须给这多个标签取不同的id名,分别选中设置
-
缺点:id选择器只能实现单选,不能帮我们完成多选的功能。
-
一般在工作中很少用到id选择器
-
-
类选择器_命名规则:必须以字母开头,后面可以有字母、数字、下划线、横线,严格区分大小写。class属性值可以与其他的class相同
-
一个标签的class属性可以有多个属性值,值之间用空格分隔,每个属性值组成的选择器都可以选中这一个标签,每个选择器后面的样式都会添加给同一个标签
-
类选择器的特殊应用_原子类:在css中提前设置一些类名,每个类选择器后面只添加一条css样式属性,这些属性会在页面中常被使用,后期可以不需要多次书写属性,只要将对应的类名添加给需要的标签即可
-
-
实际工作中,通常我们有一个使用规律:类上样式(css),id上行为(JavaScript)
-
通配符选择器_书写方式:* 选择所有选择器
-
缺点:通配符选择器效率低,设置的部分公共样式不是所有标签都需要添加,如果使用通配符选择,会让不需要的标签也加载一次样式,导致浏览器多做无用的工作
-
注意:实际上线的网站不允许使用通配符选择器去清除默认内外边距
-
-
后代选择器:通过标签之间存在的嵌套关系(族谱关系)去选择元素,基本组成部分就是基础选择器,后代选择器也叫包含选择器
-
书写方式:空格表示后代,基础选择器中间使用空格分隔,空格前面的选择器选中的标签必须是后面选择器中标签的祖先级
-
注意:后代选择器必须满足所有的后代关系才能够被选中,后代关系不一定只能是父子关系,可以跳过好几层使用
-
优点:减少class属性的使用,变得更加高效
-
-
交集选择器:通过一个标签之上满足所有的基础选择器的需求去选择标签
-
书写方式:基础选择器进行连续书写,如果有标签选择器参与交集,必须书写在开头
-
选择范围:选择的是满足所有基础选择器需求的标签,如果一个条件不满足都不能被选中
-
比较常见的是标签与类的交集
-
交集选择器更多写法:交集选择器可以进行类名的连续交集,需要满足更多的条件才能选中标签。但是IE6不支持类名连续交集写法。交集选择器可以作为其他高级选择器的组成部分:.box p.demo
-
-
并集选择器_书写方式:将多个选择器中间用逗号进行分隔,最后一个后面不能加逗号
-
css中的继承性:能够被继承的样式是所有的文字相关样式属性,其他的属性都不能被继承
-
层叠性:去解决冲突,多个选择器在进行对比的过程中,最终只有一个属性会成功加载,它会层叠、覆盖掉其他属性
-
基础选择器的权重:根据选择范围,范围越大权重越小,*<标签选择器<类选择器<id选择器
-
高级选择器权重比较方法:依次比较组成高级选择器的id的个数,类的个数,标签的个数,如果前面能够比较出大小就不再比较后面,如果前面相等就往后比较,直到比较出大小;比较顺序:id个数,类的个数,标签个数。如果选择器权重都相同,需要比较css中代码的书写顺序,后写的层叠先写的
-
!important关键字:
-
如果在比较选择器权重的过程中,遇见一个!improtant关键字,可以将某条css样式属性的权重提升到最大;书写位置:在某个css属性的属性值后面空格加!important e.g. .box {color :yellow !important;}
-
注意:就近原则中,不需要比较选择器权重,所有important会失效;important不能提升选择器的权重,只能提升某条属性的权重到最大
-
行内式的权重是最大的,但是小于!important
-