css的选择器,在前端开发中只是很小的一部分,但其重要性却不可忽略。因为其比较繁琐。在看了很多书籍和文章后。我发现选择器的组织真的很混乱,没有找到一个完整的总结。不敢保证我的是否是最完整的,但我已竭尽所能。话不多说,直接看下文:
1.通配符选择器:*{
color:blue
}
//代表所有的标签和元素
2.类型选择器(标签选择器):body{
color:blue
}
//根据html标签来进行选择的选择符
3.id和class选择符:#id名{
color:blue
}
.class名{
color:blue
}
//需要注意的是id具有唯一性,而class不具有,而且id的优先级高于class
4.伪类选择器://常用的是锚伪类
a:link{} /*链接未访问*/
a:visited{} /*链接已访问*/
a:hover{} /*鼠标移动到链接*/
a:active{} /*选定链接*/
a:focus{} /*聚焦时*/
a:lang{} /*元素带有指定lang时*/
a:first-child{} /*元素在页面第一次出现时*/
5.伪元素选择器:a:before{} /* 在某个元素的前面插入内容*/
a:after{} /*在某个元素的后面插入内容*/
a:first-line /*为某个元素的文本首行设置特殊样式,只能用于块级元素*/
a:first-letter /*为某个元素的文本首字母或第一个字设置样式,只能用于块级元素*/
6.复合选择器(包含以下几种):
6.1交集选择器:h3.class名{} //第一个必须是标签选择器,第二个必须是id或class选择器
6.2并集选择器:h1,h2,span{} //结果是同时选中各个基本选择器所选择的范围。
6.3后代选择器:p span{} //用空格分隔开,p标签之间包含span标签,外层标签写在前面,内层的标记写在后面,发生嵌套时,内层标记就成了外层标记的后代。
6.4子选择器:p>span{} //只对其直接后代有影响
各类优先级权重比例如下:
//////构建页面框架时,通常只给外层标记定义class或者id。
后代选择器与子选择的区别:
后代选择包括在其标签内部的所有标签,可以是子标签,孙子标签,曾孙子标签。。。。
子选择器只对其直接后代有影响,即:只作用于子标签。
样式选择器权重优先级如下:
important的权重为 1, 0, 0, 0
ID选择器的权重为 0, 1, 0, 0
类选择器的权重为 0, 0, 1, 0
伪类选择器的权重为 0, 0, 1, 0
属性选择器的权重为 0, 0, 1, 0
标签选择器的权重为 0, 0, 0, 1
伪元素选择器的权重为 0, 0, 0, 1
通配符的权重为 0, 0, 0, 0
综上,各选择器的优先级如下。
important > 内联样式 > ID > 类 | 伪类 | 属性选择 > 标签 | 伪元素 > 继承 > 通配符