前端开发学习笔记–CSS 选择器(续伪类选择器)

发布于 2018-04-12  174 次阅读


伪类选择器分为四种类型:结构性伪类、UI 伪类、动态伪类和其他伪类选择器

一、结构性伪类选择器能够根据元素在文档中的位置选择元素都有一个前缀(:),类型如下:

⑴:根元素选择器
:root {
         border: 1px solid red;
}
//释:匹配文档中的根元素,总是返回<html>元素,基本不用
⑵:子元素选择器
ul > li:first-child {
                     color: green;
}
//释:选择第一个子元素。

ul > li:last-child {
                   color: green;
}
//释:选择最后一个子元素。

ul > li:only-child {
                    color: green;
}
//释:选择只有一个子元素的那个子元素。

div > p:only-of-type {
                      color: green;
}
//释:选择只有一个指定类型的子元素的那个子元素。
⑶:nth-child(n)系列
ul > li:nth-child(3) {
                      color: green;
}
//释:选择子元素的第二个元素。
ul > li:nth-last-child(3) {
                           color: green;
}
//释:选择子元素倒数第二个元素。
div > p:nth-of-type(3) {
                        color: green;
};
//释:选择特定子元素的第二个元素。
div > p:nth-last-of-type(3) {
                             color: green;
};
//释:选择特定子元素的倒数第二个元素

二、UI 伪类选择器根据元素的状态匹配元素。类型如下:

⑴::enabled

:enabled {
          border: 1px solid red;
}
//释:选择启用状态的元素

⑵:  :disabled

:disabled {
           border: 1px solid red;
}
//释:选择禁用状态的元素。

⑶::checked

:checked {
          display: none;
}
//释:选择勾选的 input 元素

⑷::default

:default {
          display: none;
}
//释:从一组类似的元素中选择默认元素。

⑸::valid 和:invalid

input:valid {
             border: 1px solid blue;
input:invalid {
   	      border: 1px solid green;
}
//释:输入验证合法与不合法显示时选择的元素。

⑹::required 和:optional

input:required {
                border: 1px solid blue;
}
input:optional {
                border: 1px solid green;
}
//释:是否具有 required 属性选择元素。

三.动态伪类选择器,根据条件的改变匹配元素。类型如下:

⑴::link 和 visited

a:link {
        color: red;
}
a:visited {
           color: orange;
}
//释::link 表未访问过的超链接,:visited 表已访问过的超链接。

⑵::hover

a:hover {
         color: blue;
}
//释:表鼠标悬停在超链接上

⑶::active

a:active {
          color: green;
}
//释:表鼠标按下激活超链接时的状态。

⑷::focus

input:focus {
             border: 1px solid red;
}
//释:表获得焦点时的状态

四.其他伪类选择器

⑴::target

:target {
         color: red;
}
//释:定位到锚点时,选择此元素

⑵::not

a:not([href*="itwordsweb"]) {
                             color: red;
}
//释:否定选择器

⑶::empty

:empty {
        display: none;
}
//释:匹配没有任何内容的元素

⑷::lang

:lang(en) {
           color: red;
}
//释:选择包含 lang 属性,属性值前缀为 en 的元素。和属性选择器匹配结果一致