找回密码
 立即注册
查看: 227|回复: 0

CSS3新增的伪类选择器,让你体验使用CSS3的快感。

[复制链接]
发表于 2022-6-26 21:09 | 显示全部楼层 |阅读模式
CSS选择器用于选择你想要的元素的样式的模式。伪类元素主要用于对已有选择器做进一步的限制,对已有选择器能匹配的元素做进一步的过滤。

伪类选择器

1.UI元素状态伪类选择器

UI元素状态伪类选择器主要用于根据UI元素的状态进行筛选,UI元素状态伪类选择器有如下几个。
示例描述示例描述
:link选择链接元素:visited访问过链接元素后的状态
:hover鼠标悬停其上的元素:ative鼠标点击时触发的事件
:focus当前获取焦点的元素:enabled元素处于可用状态
:disabled元素处于不可用状态:checked元素处于选中状态
:selection当前被选中的内容:indeterminate当前选中状态不明确的元素
:read-only处于只读状态的元素:read-write处于读写状态的元素
:required具有必填要求的元素:optional无必须要求填写的元素
:valid能通过输入校验的元素:invalid不能通过输入校验的元素
:in-range当前处于指定范围的元素:out-of-range当前处于超出范围的元素
2.结构伪类选择器

结构伪类选择器是指根据HTML元素之间的结构关键进行筛选的伪类选择器。
2.1 :root伪类选择器

用于匹配HTML文档的根元素,根元素只能是<html>元素。
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :root伪选择器 </title>        <style type="text/css">                :root {                        background-color: #ccc;                }                body {                        background-color: #888;                }        </style></head><body>Java Java Java<br/>Java EE Java EE Java EE<br/>Ajax Ajax Ajax<br/>XML XML XML<br/>Java EE Java EE Java EE<br/>Android Android Android<br/></body></html>2.2 :first-child、:last-child、:nth-child、:nth-last-child和:only-child

这组选择器依次要求匹配该元素必须是其父元素的第一个子节点、最后一个子节点、第n个子节点、倒数第n个子节点、唯一的子节点,这是这组选择器的共同特点,下面将示范它的用法,希望大家想学习CSS3选择器的朋友,以实际操作为主,去理解CSS3选择器的含义和用法。
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :child </title>        <style type="text/css">                /* 定义对作为其父元素的第一个子节点的li元素起作用的CSS样式 */                li:first-child {                        border: 1px solid black;                }                /* 定义对作为其父元素的最后一个子节点的li元素起作用的CSS样式 */                li:last-child {                        background-color: #aaa;                }                /* 定义对作为其父元素的第2个子节点的li元素起作用的CSS样式 */                li:nth-child(2){                        color: #888;                }                /* 定义对作为其父元素的倒数第2个子节点的li元素起作用的CSS样式 */                li:nth-last-child(2){                        font-weight: bold;                 }                /* 定义对作为其父元素的唯一的子节点的span元素起作用的CSS样式 */                span:only-child {                        font-size: 30pt;                        font-family: "隶书";                }        </style></head><body><ol>        <li>www.baidu.com</li>        <li>www.baidu.com</li>        <li>www.baidu.com</li>        <li>www.baidu.com</li>        <li>www.baidu.com</li></ol><ul>        <li id="java">Java</li>        <li id="javaee">Java EE</li>        <li id="ajax">Ajax</li>        <li id="xml">XML</li>        <li id="ejb">Java EE企业应用</li>        <li><span id="android">Android</span></li></ul><span>Java</span></body></html> 对于nth-child和nth-last-child两个伪类选择器,它们的功能不止于此,还支持奇数、偶数节点和xn+y的用法。
选择器:nth-child(odd/event)父元素的第奇数个/偶数个子节点的元素
选择器:nth-last-child(odd/event)父元素的倒数奇数个/偶数个子节点的元素
选择器:nth-child(xn+y)父元素的第xn+y个子节点
选择器:nth-last-child(xn+y)父元素的倒数第xn+y个子节点
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :nth-child </title>        <style type="text/css">                /* 定义对作为其父元素的奇数个子节点的li元素起作用的CSS样式 */                li:nth-child(odd) {                        margin: 10px;                        border: 2px dotted black;                }                /* 定义对作为其父元素的偶数个子节点的li元素起作用的CSS样式 */                li:nth-child(even) {                        padding: 4px;                        border: 1px solid black;                }                /* 定义对作为其父元素的倒数第3n+1个(1、4、7)子节点                        的li元素起作用的CSS样式 */                li:nth-last-child(3n+1) {                        border: 2px solid black;                }        </style></head><body><ul>        <li id="java">Java</li>        <li id="javaee">Java EE</li>        <li id="ajax">Ajax</li>        <li id="xml">XML</li>        <li id="ejb">Java EE企业应用</li>        <li id="android">Android</li></ul></body></html>2.3 :first-of-type、:flast-of-type、:nth-of-type、:nth-last-of-type和:only-of-type

这组伪类选择器与上面那组xxx-child有些类似,但这组并不要求是父元素的第1个、倒数n个、唯一元素,只要求它们与其有共同类型、同级元素的第1个、倒数n个、唯一元素。也跟上组一样拥有奇偶节点和xn+y的用法。
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :type </title>        <style type="text/css">                p {                        padding: 5px;                }                /* 匹配p选择器,且是与它同类型、同级的兄弟元素中的第一个的CSS样式 */                p:first-of-type{                        border: 1px solid black;                }                /* 匹配p选择器,且是与它同类型、同级的兄弟元素中的最后一个的CSS样式 */                p:last-of-type {                        background-color: #aaa;                }                /* 匹配p选择器,且是与它同类型、同级的兄弟元素中的第2个的CSS样式 */                p:nth-of-type(2){                        color: #888;                }                /* 匹配p选择器,且是与它同类型、同级的兄弟元素中的倒数第2个的CSS样式 */                p:nth-last-of-type(2){                        font-weight: bold;                 }        </style></head><body><div>百度一下</div><p>No.1</p><p>No.2</p><p>No.3</p><p>No.4</p><hr/><div>        <div id="java">Java</div>        <div id="javaee">Java EE</div>        <p id="ajax">Ajax</p>        <p id="xml">XML</p>        <p id="ejb">Java EE企业应用</p>        <p id="android">Android</p>        <div id="swift">Swift</div></div></body></html>2.4 :empty伪类选择器

:empty伪类选择器要求该元素只能是空元素,不能包含子节点,也不能包含文本内容(连空格都不行),示例如下。
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :empty </title>        <style type="text/css">                /* 定义对空元素起作用的CSS样式 */                :empty {                        border: 1px solid black;                        height: 60px;                }        </style></head><body><img src="wjc.gif" alt="www.baidu.com"/><div></div><div> </div></body></html>2.5 :lang伪类选择器

lang伪类选择器要求匹配的内容必须是指定语言的元素。对使用多语言版本的网站,可以根据不同语言版本,设置不同的样式。
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :lang </title>        <style type="text/css">                /* 定义对语言为zh的元素起作用 */                :lang(zh) {                        border: 1px solid black;                        height: 60px;                }        </style></head><body><div lang="zh">Java</div><div>Java EE</div><p lang="zh">Android</p></body></html>3.其他伪类选择器

3.1 目标伪类选择器

target选择器要求元素必须是命名锚点(可快速将访问者带到指定位置)的目标,而且必须是正在访问的目标。我们可以通过该选择器高亮显示正在被访问的目标,听了这么多,是不是没怎么明白,让我们一起来看下面的示例,实操一下你就懂了。
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :target </title>        <style type="text/css">                :target{                        background-color: #ff0;                }        </style></head><body><p id="menu"><a href="#java">Java</a> | <a href="#ee">Java EE</a> | <a href="#android">Android</a> | <a href="#ejb">Java EE企业应用</a></p><div id="java"><h2>Java</h2><p>Java</p></div><div id="ee"><h2>Java EE</h2><p>Java EE</p></div><div id="android"><h2>Android</h2><p>Android</p></div><div id="ejb"><h2>Java EE企业应用</h2><p>Java EE企业应用</p></div></body></html>3.2 否定伪类选择器

not伪类选择器就是用两个选择器做减法,选择器匹配非指定元素或者选择器的每个元素,下面将示范它的用法。
<!DOCTYPE html><html><head>        <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        <title> :not </title>        <style type="text/css">                li:not(#ajax) {                        color: #999;                        font-weight: bold;                }        </style></head><body><ul>        <li id="java">Java</li>        <li id="javaee">Java EE</li>        <li id="ajax">Ajax</li>        <li id="xml">XML</li>        <li id="android">Android</li></ul></body></html>
层次选择器

层次选择器是通过DOM元素间的层次关系获取元素,其主要的层次关系包括后代、父子、相邻、兄弟关系,通过其中基类关系可以方便快捷地定位元素,以下就是层次选择器的类型。
类型示例描述
后代选择器div p选择 <div> 元素内部的所有 <p> 元素
子选择器div>p选择父元素为 <div> 元素的所有 <p> 元素
相邻兄弟选择器div+p选择紧接在 <div> 元素之后的所有 <p> 元素
通用选择器p~ul选择前面有 <p> 元素的每个 <ul> 元素

浏览器专属的属性

有些CSS属性还不支持一些浏览器,为了让这些浏览器识别专属属性,CSS规范在CSS属性前增加各自的浏览器前缀。例如:-moz-前缀是Mozilla浏览器(如Firefox)的前缀。常见浏览器前缀如下所示。
前缀组织示例说明
-ms-Microsoft-ms-interpolation-modeInterner Explorer浏览器专属的CSS属性需要加上-ms-前缀
-moz-Mozllia-moz-read-only所有基于Gecko引擎的浏览器(Firefox)专属的CSS属性需要加上-moz-前缀
-webkit-Webkit-webkit-box-shadowChrome、Safari、新版Opera专属的CSS属性需要加上-webkit-前缀
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-1 13:46 , Processed in 0.101436 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表