CSS权威指南(四)第二章--选择符

168 阅读4分钟

通用选择符

css2中引入了一个新的选择符,名为通用选择符,写作星号(*)。可以匹配所有元素。特制度为0-0-0

类选择符

.className{}

例如 p.warning匹配所有class属性的值中包含warning的p元素。所以p和.warning是对同一个元素的。

相对的,.warning p描述的是.warning元素子元素中所有的p元素

类选择符可以串在一起用,比如.warning.urgent这样,描述的是同时具有warning和urgent两个类名的元素。

id选择符

#id{}用于根据id选择元素。原则上一个id在一个html文档中只可以出现一次。

id选择符不能串在一起,因为id的属性值不能是以空格分隔的列表。

id选择符的权重高于类选择符

属性选择符

如果想选择具有class属性的所有h1元素,可以用h1[class]

根据部分属性值选择 [foo|="bar"]选择的元素有foo属性,且值是-bar或者bar的元素 [foo~="bar"]选择的元素有foo属性,且值是包含bar这个词的的一组词 [foo*="bar"]选择的元素具有foo属性,且bar是值的子串 [foo^="bar"]选择的元素具有foo属性,且值以bar开头 [foo$="bar"]选择的元素具有foo属性,且以bar结尾

重头戏 根据文档结构选择元素

父子关系

空格连接符,前面说的p .warning代表的是在p里面类名为warning的后代元素,不管层级多深。

连接符代表的是直接的父子关系,p > .warning 代表p中类名为warning的直接子元素。

+连接符代表紧邻的同胞元素,比如h1 + p代表就是h1后的p元素

~连接符代表后续同胞元素,选择一个元素后面同属一个父元素的另一个元素。

伪类连接符

伪类用一个冒号

:root 选择文档的根元素

:first-child 第一个子元素,比如div:first-child代表是父元素第一个子元素的div元素,但是div :first-child代表div的后代元素中,所有是父元素的第一个子元素的元素。

:last-child 最后一个子元素,大概规则跟上面差不多

:empty 没有任何子代的元素

:only-child 选择的元素是另一个元素是唯一子元素

:only-of-type匹配同胞中唯一的元素,比如一个div中假如只有一个p元素,那么这个p元素就会被选中,但是如果有两个或者以上的p元素,全部都不会被选择

:first-of-type 一个元素中某种元素的第一个

:last-of-type 一个元素中某种元素的最后一个

:nth-child(3)第三个元素,可以用代数式,比如3n+1(注意,html元素是从第一个开始,而不是从第0个开始,跟数组不一样)

:nth-last-child 倒数的第n个元素

:nth-of-type 选择每第n个某种元素

:link 尚未访问的超链接

:visited 已经访问的超链接

:focus 当前获得输入焦点的元素

:hover 鼠标悬停的元素

:active 用户输入激活的元素

:enabled 接受输入的元素

:disabled 不接受输入的元素

:checked 选中的单选按钮或复选框

:indeterminate 既未选中也没有未选中的单选按钮或复选框(什么乱七八糟的),只可以通过设置dom脚本实现

:default 默认选中的单选按钮复选框或选项

:valid 满足所有数据有效性语句的输入框

:invalid 不满足所有数据有效性语义的输入框

:in-range 指代输入的值在最小值和最大值之间的输入框

:out-of-range 指代输入值不在合法范围内的输入框

:required 必须输入值的输入框

:optional 指代无需一定输入的输入框

:read-write 指代可以由用户编辑的输入框

:read-only 指代不能由用户编辑的输入框

:not(:checked) 指代没有被选中的复选框

伪元素

伪元素用两个冒号,伪元素只能出现在选择符的最后。

::first-letter 文本中的首字母,仅用于块级元素

::first-line 文本中的第一行元素,仅用于块级元素

::before 在元素前插入伪元素

::after 在元素后插入伪元素