Skip to content

CSS3 选择器

基本选择器(6个)

① 标签名选择器

css
标签名 {}

② 类名选择器

css
.类名 {}

③ ID 选择器

css
#ID名 {}

④ 全局选择器

css
* {}

⑤ 交集选择器(选择器的组合形式)

css
选择器1选择器2 { } 按照顺序进行组合 交集有括号处理

⑥ 并集选择器(选择器的组合形式)

css
选择器1,选择器2 {} 按照顺序分析,交集当作有括号处理

层级选择器(4个)

① 后代元素选择器

css
选择器1 选择器2 {}

② 子元素选择器

css
选择器1 > 选择器2 {}

③ 相邻兄弟元素选择器

css
选择器1 + 选择器2 {}
选择紧邻在后面的兄弟元素,仅仅是紧邻的元素

④ 通用兄弟元素选择器

css
选择器1 ~ 选择器2 {}
选择后面的兄弟元素,只要包含了元素都可以选择上

属性选择器(5个)

css
[attr]			  选择包含属性名attr的元素
[attr=“val”]  	  选择属性attr的值是val的元素
[attr^="val"]     选择属性attr的值以val开头的元素
[attr$="val"]     选择属性attr的值以val结尾的元素
[attr*="val"]     选择属性attr的值包含val的元素

属性选择器如果与其他选择器进行交集组合,通常写在其他选择器的后面

css
img[alt] {}
.item[title] {}

伪类选择器(23个)

① 动态伪类选择器(5个)

css
:link
:visited
:hover
:active	
:focus		选择获取到焦点的元素

② 目标伪类选择器(1个)

css
:target		选择到当前锚点所对应的元素

③ 语言伪类选择器 (1个,了解)

css
:lang(语言)
css
问答: :lang(zh-CN) 和 [lang="zh-CN"] 什么区别?
答案: :lang(zh-CN) 所选择到的元素中可以自己不设置 lang 属性,会继承祖先元素的语言设置
	  [lang="zh-CN"] 所选择到元素,必须元素自身设置了 lang 属性。

④ UI元素伪类选择器(3个)

css
:enabled		可用的表单控件
:disabled		不可用的表单控件
:checked		被选中的表单控件(单选框、复选框、下拉选项)

⑤ 结构伪类选择器(12个)

当作条件来理解,条件1条件2等等

css
:frist-child			在兄弟元素中排名第一 是不是兄弟不是根据名字决定的,而是根据位置决定的
:last-child				在兄弟元素汇总的排名最后
:nth-child(n)			在兄弟元素中排名第n个
:nth-last-child(n)		在兄弟元素中排名倒数第n个
:only-child				没有兄弟元素

:first-of-type			在同标签名的兄弟元素中排名第一
:last-of-type			在同标签名的兄弟元素中排名最后
:nth-of-type(n)			在同标签名的兄弟元素中排名第n个
:nth-last-of-type(n)	在同标签名的兄弟元素中排名倒数第n个
:only-of-type			没有同标签名的兄弟元素

:root					根元素
:empty					没有文本内容也没有后代元素
css
:nth-child(odd)        奇数行
:nth-child(even)       偶数行
:nth-of-type(2n-1)	   奇数行
:nth-of-type(2n)	   偶数行
:nth-of-type(3n)	   排号是3的倍数

⑥ 否定伪类选择器(1个)

css
:not(选择器) 			 选择不满足括号中选择器的元素

伪元素选择器(6个)

css
::first-letter / :first-letter	选择元素中的第一个文字
::first-line / :first-line		选择元素中的第一行文字
::before / :before				给元素动态添加子元素,放在第一个位置
::after / :after				给元素动态添加子元素,放在最后一个位置
::placeholder					选择输入框、文本域中placeholder中的文字
::selction						选择被鼠标选中的文字

::before::after 选择器后面的声明块中必须设置 content 属性!

选择器的优先级(权重)

css
1. ID选择器 > 类选择器、伪类选择器、属性选择器 > 标签名选择器、伪元素选择器 > 全局选择器
2. !important > 行内式 > 任何选择器
   注意:!important 可以无限提高某个属性的权重

https://flukeout.github.io/

权重的等级与权值

行内样式(1000)> ID选择器(100)> 类,属性选择器和伪类选择器(10)> 元素选择器和伪元素选择器(1)>通配符选择器(0)

CSS权重规则

\1) 当多个选择器发生冲突时,会选择权重高的选择器来显示,权重越高越优先显示

\2) 比较时需要将多个选择器的权重进行相加在进行比较,如果权重一样,后面的会覆盖前面的样式

\3) 权重相加不可能超过他的最大数量级,例如无论多少个元素组成的选择器,都没有一个class选择器权重高

\4) 可以在样式后边添加一个!important ,这样该样式将会拥有最大的权重,其他样式都不能将其覆盖(注意:尽量不要使用!important)