伪类与伪元素

伪类与伪元素的出现是为了描述一些现有CSS无法描述的东西,比如“段落的第一行”、“文章首字母”

伪类:用于操作一些已经在文档树中存在的元素

伪元素:用于创建一些不在文档树中的元素

常见的伪类:

(1)表示状态:

:link    选择未访问的链接,

:visited     选择已访问的链接,

:hover    选择鼠标指针移入的链接,

:active    被激活的链接,即按下单击鼠标左键后的链接,

:focus    选择获取焦点的输入字段

前四个是链接状态的伪类,在设置的时候必须按照上面的顺序来设置,记忆技巧是:

L(:link)OV(:visited)E     H(:hover)A(:active)TE ——爱恨法则

(2)结构化伪类:(理解:first-child以及:first-of-type的区别就能很好的理解其他结构化伪类)

:not(selector)    用于选择所有selector之外的元素

:first-child    用于匹配所有或指定父元素的第一个规定类型子元素,要注意,匹配成功的条件必须是第一个子元素,以及是规定类型,否则匹配失败

:last-child    略

:first-of-type    匹配body或指定父元素的所有规定类型元素中出现的第一个元素

:last-of-type    略

:nth-child(num)    :nth-child(1)跟:first-child的作用是一致的。括号内还可以引入公式或是关键字,比如odd,even以及an+b等类似的公式

:nth-last-child(num)    和:nth-child(num)作用类似,但是数字是倒数的

:nth-of-type    :nth-of-type(1)跟:first-of-type的作用是一致的。括号内还可以引入公式或是关键字,比如odd,even以及an+b等类似的公式

:only-of-type    当元素是其父元素特定类型的子元素中唯一一个时,:only-child匹配该元素;

:only-child    当元素是其父元素中唯一一个子元素时,:only-child匹配该元素;

:target    当URL带有锚名称,指向文档内某个具体的元素时,:target匹配该元素;

(3)表单相关伪类:

:checked    匹配被选中的input元素,这个input元素包括radio和checkbox

:default    匹配默认选中的元素

:disabled    匹配禁用的表单元素

:empty    匹配没有子元素的元素。如果元素中含有文本节点、html元素或者一个空格,匹配失败

:enabled    匹配没有禁用属性的表单元素

:indeterminate    匹配某组未被选中的单选框或复选框

:valid    匹配条件验证正确的表单元素

:invalid    略

::optional    匹配是具有optional属性的表单元素。当表单元素没有设置为required时,即为optional属性;

:required    匹配设置了required属性的表单元素;

:read-write    匹配处于编辑状态的元素。input,textarea和设置了contenteditable的HTML元素获取焦点时即处于编辑状态;

:lang    匹配设置了特定语言的元素,设置特定语言可以通过为了HTML元素设置lang=””属性,设置meta元素的charset=””属性,或者是在http头部上设置语言属性;

常见的伪元素:

:before    在元素前加入一个新元素,新元素内容由content属性决定,可以是纯文本,也可以用content:url()方式引入图片,所有在该选择器中的规则都是用来描述这个新元素的

:after    略

:first-letter    选择每个

元素的第一个字母

:first-line    选择每个

元素的第一行

伪类与伪元素在W3C中的定义其实意思是一样的,一个是给选择器添加效果,一个是将效果添加给选择器,换言之,其实他们就是为了让选择器有了更强大的描述能力。

原文地址:https://www.cnblogs.com/runhua/p/7133774.html