云切图

CSS

CSS属性复习,帮你快速掌握CSS,助推学生快速完成网页作业

首页 > 前端笔记 > CSS

常用CSS3选择器汇总(下)

作者:admin 发布时间:2022-09-09 点击数:

本章主要探讨 HTML5 中 CSS 选择器中的伪类选择器,和伪元素选择器一样,面向某种共同特征来选择元素。

一.伪类选择器总汇

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

选择器名称说明版本
:root根元素选择器选择文档中的根元素3
:first-child子元素选择器选择元素中第一个子元素2
:last-child子元素选择器选择元素中最后一个子元素3
:only-child子元素选择器选择元素中唯一子元素3
:only-of-type子元素选择器选择指定类型的唯一子元素3
:nth-child(n)子元素选择器选择指定 N 个子元素3
:enabledUI 选择器选择启用状态的元素3
:disabledUI 选择器选择禁用状态的元素3
:checkedUI 选择器选择被选中 input 勾选元素3
:defaultUI 选择器选择默认元素3
:validUI 选择器验证有效选择 input 元素3
:invalidUI 选择器验证无效选择 input 元素3
:requiredUI 选择器有 required 属性选择元素3
:optionalUI 选择器无 required 属性选择元素3
:link动态选择器未访问的超链接元素1
:visited动态选择器已访问的超链接元素1
:hover动态选择器悬停在超链接上的元素2
:active动态选择器激活超链接上的元素2
:foucs动态选择器获取焦点的元素2
:not其他选择器否定选择的元素3
:empty其他选择器选择没有任何内容的元素3
:lang其他选择器选取包含 lang 属性的元素2
:target其他选择器选取 URL 片段标识指向元素2

二.结构性伪类选择器

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

1.根元素选择器

:root {border: 1px solid red;}

解释:匹配文档中的根元素,基本不怎么用,因为总是返回<html>元素。


2.子元素选择器

ul > li:first-child {color: red;}

解释:选择第一个子元素。

ul > li:last-child {color: red;}

解释:选择最后一个子元素。

ul > li:only-child {color: red;}

解释:选择只有一个子元素的那个子元素。

div > p:only-of-type {color: red;}

解释:选择只有一个指定类型的子元素的那个子元素。


3.:nth-child(n)系列

ul > li:nth-child(2) {color: red;}

解释:选择子元素的第二个元素。

ul > li:nth-last-child(2) {color: red;}

解释:选择子元素倒数第二个元素。

div > p:nth-of-type(2) {color: red;}

解释:选择特定子元素的第二个元素。

div > p:nth-last-of-type(2) {color: red;}

解释:选择特定子元素的倒数第二个元素。

三.UI 伪类选择器

UI 伪类选择器是根据元素的状态匹配元素。

1.:enabled

:enabled {border: 1px solid red;}

解释:选择启用状态的元素。


2.:disabled

:disabled {border: 1px solid red;}

解释:选择禁用状态的元素。


3.:checked

:checked {display: none;}

解释:选择勾选的 input 元素。


4.:default

:default {display: none;}

解释:从一组类似的元素中选择默认元素。比如 input 被勾选的即默认的。


5.:valid 和:invalid

input:valid {border: 1px solid blue;}

input:invalid {border: 1px solid green;}

解释:输入验证合法与不合法显示时选择的元素。


6.:required 和:optional

input:required {border: 1px solid blue;}

input:optional {border: 1px solid green;}

解释:根据是否具有 required 属性选择元素。

四.动态伪类选择器

动态伪类选择器根据条件的改变匹配元素。

1.:link 和 visited

a:link {color: red;}

a:visited {color: orange;}

解释::link 表示未访问过的超链接,:visited 表示已访问过的超链接。


2.:hover

a:hover {color: blue;}

解释:表示鼠标悬停在超链接上。


3.:active

a:active {color: green;}

解释:表示鼠标按下激活超链接时。


4.:focus

input:focus {border: 1px solid red;}

解释:表示获得焦点时。

五.其他伪类选择器

1.:not

a:not([href*="baidu"]) {color: red;}

解释:否定选择器,反选。


2.:empty

:empty {display: none;}

解释:匹配没有任何内容的元素。


3.:lang

:lang(en) {color: red;}

解释:选择包含 lang 属性,属性值前缀为 en 的元素。和属性选择器匹配结果一致。


4.:target

:target {color: red;}

解释:定位到锚点时,选择此元素。


5.::selection

::selection {color: red;}

解释:这是一个伪元素选择器,当选择文字时触发选择。CSS3 版本下的选择器。

六:实操源码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>常用CSS3选择器汇总(下)</title>
<meta name="author" content="PHP课堂">
<link rel="stylesheet" href="css/base.css">
</head>
<body>
<dl>
<dt>二.UI 伪类选择器</dt>
<style>
.dd_01 input:enabled {
color: red;
}

/*解释:选择启用状态的元素。*/
.dd_01 input:disabled {
color: green;
}

/*解释:选择禁用状态的元素。*/

.dd_01 input[type='checkbox']:checked {
display: none;
}

/*解释:选择勾选的 input 元素。*/
.dd_01 input[type='radio']:default {
display: none;
}

/*解释:从一组类似的元素中选择默认元素。比如 input 被勾选的即默认的。*/

.dd_01 input[type='number']:valid {
border: 1px solid green;
}

/*解释:输入验证合法与不合法显示时选择的元素。*/
.dd_01 input[type='number']:invalid {
border: 1px solid red;
}

.dd_01 input[name="phone"]:required {
color: red;
}

/*解释:根据是否具有 required 属性选择元素。*/
.dd_01 select:optional {
color: red;
}

/*解释:根据是否具有 option 属性选择元素。*/
</style>
<dd>
<input type="text" name="uname" value="renhaibo">
<input type="password" name="upass" value="123456" disabled="true"><br />

<input type="checkbox" name="like"> 看电影
<input type="checkbox" name="like" checked="true"> 听音乐<br />

<input type="radio" name="sex" checked="true">男
<input type="radio" name="sex">女<br />

<input type="number" name="age" placeholder="请输入数字"><br />

<input type="tel" name="phone" placeholder="请输入电话号码" required><br />
<select name="" id="">
<option value="">请选择</option>
</select>
</dd>
</dl>

<dl>
<dt>三.动态伪类选择器</dt>
<style>
.dd_02 ul li a:link {
color: red;
}

/*解释 :link 表示未访问过的超链接*/
.dd_02 ul li a:visited {
color: green;
}

/*解释 :visited 表示已访问过的超链接。*/
.dd_02 ul li a:active {
color: #fff;
}

/*解释:表示鼠标按下激活超链接时。*/
.dd_02 ul li a:hover {
color: #000;
}

/*解释:表示鼠标悬停在超链接上。*/

.dd_02 input:focus {
border: 1px solid red;
}

/*解释:表示获得焦点时。*/
</style>
<dd>
<ul>
<li><a href="http://m.baidu.com" target="_blank">我是一个超链接</a></li>
<li><a href="http://m.baidu.com" target="_blank">我是一个超链接</a></li>
<li><a href="http://m.baidu.com" target="_blank">我是一个超链接</a></li>
</ul>

<input type="text" name="uname" placeholder="请输入姓名">
</dd>
</dl>

<dl>
<dt>四.其他伪类选择器</dt>
<style>
a:not([href*='baidu']) {
color: green;
}

/*解释:否定选择器,反选。*/
p:empty {
width: 100px;
height: 20px;
border: 1px solid green;
}

/*解释:匹配没有任何内容的元素。*/
a:target {
font-weight: bold;
}

/*解释:定位到锚点时,选择此元素。*/
p:lang(en) {
color: green;
}

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

h6:target {
color: green;
}

/*解释:定位到锚点时,选择此元素。*/
::selection {
color: #fff;
}

/*解释:这是一个伪元素选择器,当选择文字时触发选择。CSS3 版本下的选择器。*/
</style>
<dd style="height: 500px;">
<a href="http://www.baidu.com">百度</a>
<a href="http://www.sogou.com" target="_blank">搜狗</a>

<a href="#1">其他</a>

<p>renhaibo</p>
</dd>
</dl>

<h6 id="1">看到我就变色了</h6>
</body>
</html

关注我们共同进步

  • 扣扣交流群

  • 微信公众号

  • 私技术顾问

嘿,我来帮您!