CSS伪类选择器

目录

前言:

链接伪类:

用户行为伪类:

元素状态伪类:

结构化伪类:

否定伪类:

目标伪类:

输入伪类:


前言:

        在CSS中有一种特殊的选择器:伪类选择器,可以使用伪类设置元素的动态状态,比如点击,或者鼠标在元素上方,或者是让其他选择器不能选择这些元素(没有ID或者class).伪类的名称不区分大小写,但使用时需要用:冒号开头初识CSS-CSDN博客 0基础看这一篇就够了HTML教程(详细汇总)-CSDN博客

除此之外伪类还需要跟CSS中的选择器结合一起使用,其语法为:

selector:pseudo-class{property:value;
}

上述示例中:selector是选择器的名称,pseudo-class是伪类的名称。

        在CSS中提供了多种多样的伪类选择器,让我们可以根据元素的特定状态或属性来选择和样式化元素。以下是一些常见的CSS伪类以及它们的使用:

链接伪类

  • :link:选择所有未被访问的链接。
  • :visited:选择用户已访问的链接。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 未访问的链接 */a:link {color: rgb(255, 179, 0);}/* 访问过的链接 */a:visited {color: rgb(11, 128, 0);}</style>
</head><body><a href="https://www.bilibili.com/" target="_blank">点击此链接跳转到B站</a>
</body></html>

         上述代码:如果没有访问过<a>标签那么此时链接的为color: rgb(255, 179, 0);类似橘黄色,如果点击了链接访问后就会变成color: rgb(11, 128, 0);类似绿色,如果你一运行html就是访问过的样式可能是因为历史记录中访问过。

用户行为伪类

  • :hover:当用户将鼠标指针悬停在元素上时选择该元素。
  • :active:当用户与元素交互(如点击一个链接或按钮)时选择该元素。
  • :focus:选择获得焦点的元素,例如输入框。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>button {width: 50px;height: 30px;}/* 鼠标悬停时改变按钮背景色 */button:hover {background-color: rgb(21, 194, 64);}/* 点击按钮时改变其颜色 */button:active {color: rgb(224, 38, 38);}/* 输入框获取焦点时改变边框颜色 */button:focus {border-color: rgb(18, 197, 39);border: 5px solid red;}</style>
</head><body><button>2</button><button>1</button><button>63</button>
</body></html>

         代码运行示例如下:其中第一个为正常的样式,第二个被点击过之后边框颜色变为了border-color: rgb(18, 197, 39); 其中第三个鼠标正在其上方然后其颜色变为了 border-color: rgb(18, 197, 39);

 

元素状态伪类

  • :enabled:选择所有启用的表单元素。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 样式化所有启用的表单元素 */input:enabled {background-color: lightgreen;}</style>
    </head><body><input type="text" placeholder="启用的输入框"><input type="text" placeholder="启用的输入框" disabled>
    </body></html>
  • :disabled:选择所有禁用的表单元素。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 样式化所有禁用的表单元素 */input:disabled {background-color: lightgray;}</style>
    </head><body><input type="text" placeholder="禁用的输入框" disabled><input type="text" placeholder="启用的输入框">
    </body></html>
  • :checked:选择被选中的表单元素,如单选按钮或复选框。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 样式化被选中的表单元素 */input:checked+label {color: red;text-decoration: underline;}</style>
    </head><body><input type="radio" id="option1" name="option" checked><label for="option1">选项 1 (选中)</label><br><input type="radio" id="option2" name="option"><label for="option2">选项 2</label><br>
    </body></html>

结构化伪类

  • :first-child:选择其父元素的第一个子元素。
  • :last-child:选择其父元素的最后一个子元素。
  • :nth-child(n):选择其父元素的第n个子元素。
  • :nth-last-child(n):选择其父元素的倒数第n个子元素。
  • :only-child:如果元素是其父元素的唯一子元素,则选择该元素。
  • :first-of-type:选择一组兄弟元素中其类型的第一个元素。
  • :last-of-type:选择一组兄弟元素中其类型的最后一个元素。
  • :nth-of-type(n):选择一组兄弟元素中其类型的第n个元素。
  • :nth-last-of-type(n):选择一组兄弟元素中其类型的倒数第n个元素。
  • :only-of-type:如果元素是其父元素中唯一具有该类型的子元素,则选择该元素。

部分示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>li:first-child {color: red;font-weight: 900;font-size: large;}li:last-child {color: aqua;font-size: larger;font-weight: 100;}p:only-child,a:only-child {background-color: bisque;}li:nth-child(3) {color: blueviolet;}p:only-of-type {background-color: rgb(35, 194, 38);}li:last-of-type {background-color: rgb(238, 191, 63);}</style>
</head><body><ul><li>第一个元素</li><li>第二个元素</li><li>第三个元素</li><li>第四个元素</li><li>第五个元素</li><li>第六个元素</li><li>第七个元素</li><p>啥也没得个</p></ul><p><a href="">这里啥都没得没有连接</a></p><p>最后一个元素</p>
</body></html>

         上述代码的运行结果如:其ul中第一个li元素被li:first-child类伪类选择器选中,ul中的第三个元素使用了li:nth-child(3)其中指定了第三个所以被选中了,最后一个元素根据文档流所以被li:last-of-type选中,而其中ul中唯一的p标签被p;only-of-type选中因为p标签是ul标签中唯一的p,而倒数第二行的a因为其是它父元素中唯一的元素所以被选中了。

否定伪类

  • :not(selector):选择不符合指定选择器的所有元素。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 选择除了.excluded-class之外的所有p元素 */p:not(.excluded-class) {color: blue;}</style>
</head><body><p>这段文字将会是蓝色。</p><p class="excluded-class">这段文字将不会被样式化,因为它有.excluded-class。</p>
</body></html>

        上述代码中的第一个p变为了蓝色而class属性为excluded-class则没有因为使用的是not伪类选择器所以被去除掉了。

目标伪类

  • :target:选择当前活动的目标元素(例如,URL中带有片段标识符的元素)。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Target Pseudo-class Example</title><style>/* 通用样式 */body {font-family: Arial, sans-serif;margin: 0;padding: 20px;}h2 {color: #333;}p {margin-bottom: 20px;}/* 目标伪类样式 */:target {background-color: lightyellow;padding: 10px;border: 1px solid #ccc;}</style>
</head><body><h1>Welcome to the Target Pseudo-class Example Page</h1><h2 id="section1">Section 1</h2><p>This is the content for section 1.</p><p>Scroll down to see more sections or use the links below to navigate.</p><h2 id="section2">Section 2</h2><p>This is the content for section 2.</p><h2 id="section3">Section 3</h2><p>This is the content for section 3.</p><!-- 页脚导航 --><footer style="position: fixed; bottom: 0; left: 0; width: 100%; background: #f5f5f5; padding: 10px;"><nav><ul><li><a href="#section1">Go to Section 1</a></li><li><a href="#section2">Go to Section 2</a></li><li><a href="#section3">Go to Section 3</a></li></ul></nav></footer>
</body></html>

         每个链接都与上面的h2标签一一相连点击链接之后相关的h2标签的背景也会随之改变。

输入伪类

  • :valid:选择所有有效的输入元素。
  • :invalid:选择所有无效的输入元素。
  • :required:选择设置有"required"属性的元素。
  • :optional:选择没有"required"属性的元素。
  • :in-range:选择值在指定范围内的元素。
  • :out-of-range:选择值不在指定范围内的元素。
  • :read-only:选择只读的输入元素。
  • :read-write:选择非只读的输入元素。

代码示例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>input[type="email"]:valid {border: 2px solid green;}input[type="number"]:out-of-range {border: 2px solid red;/* 当输入值超出范围时,输入框边框变为红色 */}input:optional {background-color: aquamarine;}input:read-only {color: rgb(18, 101, 224);}</style>
</head><body><form><label for="email">Email:</label><input type="email" id="email" required><input type="submit" value="Submit"></form><form><label for="numberInput">请输入一个1到100之间的数字:</label><input type="number" id="numberInput" name="numberInput" min="1" max="100" required><input type="submit" value="提交"></form><form><label for="numberInput">请输入一个1到100之间的数字:</label><input type="number" id="numberInput" name="numberInput" min="1" max="100" required><input type="submit" value="提交"></form>
</body></html>

         第一个input输入框被选中了因为其输入的值是一个有效值(有效QQ号),第二个输入框被选中了是因为其输入了一个无效值,最后一个输入框没有被选中,其次又设置了input:optional让后续的input提交按钮被选中背景变为aquamarine,后续又选择了只读的input元素将其元素的字体设置为color: rgb(18, 101, 224);

        这些伪类提供了强大的选择能力,使我们能够精确地控制和样式化页面上的元素,基于它们的状态、位置、属性或其他条件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681385.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL——变量的浮点数问题处理

新建链接&#xff0c;自带world数据库&#xff0c;里面自带city表格。 DQL #MySQL变量的浮点数问题处理 set dx3.14,dy3.25; select dxdy;#计算显示异常&#xff0c;会有很多00000的提示set resultdxdy; select result; 查询结果

明星网红推荐的随身wifi到底靠谱吗?随身wifi哪个品牌最好用?随身wifi推荐测评!

全网5千万粉丝&#xff0c;赵本山弟子小沈龙去了格行随身wifi总部了&#xff1f;还专门在格行总部开了一场直播。发现最近不少明星网红都在推荐随身wifi。有网友说有了明星网红的信誉担保&#xff0c;很在购买时也有了一定的保障&#xff01;但是品牌众多&#xff0c;随身wifi哪…

腾讯游戏海外扩张,增持芬兰游戏开发商股份持股比例增至14.8%

易采游戏网5月8日消息&#xff0c;近日腾讯再次出手&#xff0c;大幅增持了芬兰知名游戏开发商Remedy Entertainment的股份&#xff0c;持股比例猛增至14.8%。这一举动引起了业界和投资者的广泛关注。 据了解&#xff0c;腾讯此次增持是在2024年4月24日完成的。根据芬兰法律规…

求臻医学携伴随诊断试剂盒亮相第十三届病理年会

中华医学会病理学分会第二十九次学术会议暨第十三届病理年会于2024年3月28&#xff5e;31日在北京国家会议中心隆重召开。本次大会由中华医学会、中华医学会病理学分会主办&#xff0c;汇聚近万名病理学领域海内外知名专家&#xff0c;共同见证、推进中国病理学的传承、创新、发…

使用网络工具监控网络性能

网络工具和实用程序有助于有效地检测网络问题&#xff0c;诊断其原因和位置&#xff0c;以及缓解和解决问题&#xff0c;这有助于确保网络环境的稳定性&#xff0c;使用户免受设备连接问题带来的麻烦。 网络工具已经成为每个网络管理员用于有效诊断和处理网络问题的解决方案中…

XN297 2.4GHz 单片高速无线收发芯片

概述 XN297是一款工作在2.400~2.483GHz世界通用ISM频段的单片无线收发芯片。该芯片集成 射频收发器、频率发生器、晶体振荡器、调制解调器等功能模块&#xff0c;并且支持一对多组网和带 ACK的通信模式。发射输出功率、工作频道以及通信数据率均可配置。 主要特性 1、低功…

【设计模式】之观察者模式

系列文章目录 【设计模式】之装饰器模式【设计模式】之工厂模式&#xff08;三种&#xff09;【设计模式】之工厂模式&#xff08;三种&#xff09; 前言 今天给大家介绍另一种设计模式--观察者模式&#xff0c;有了解webscoket实现原理的小伙伴应该对这个设计模式不陌生。不清…

2023年ICPC亚洲济南地区赛 G. Gifts from Knowledge

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5, b…

【随笔】Git 高级篇 -- 上传命令的参数 (上)git push(三十六)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

飞天使-k8s知识点31-rancher的正确打开方式

文章目录 安装之前优化一下内核参数以及系统内核版本 rancher安装主要是使用以下命令nginx的配置为解决办法 安装之前优化一下内核参数以及系统内核版本 内核版本 4.17 cat > /etc/modules-load.d/iptables.conf <<EOF ip_tables iptable_filter EOF 然后重启服务器…

释放创造力,低成本实现您的梦想应用 —— 尽在我们的开源低代码平台!

在数字化时代&#xff0c;每个企业都渴望拥有自己的专属应用&#xff0c;但传统开发模式的高成本和技术壁垒让许多梦想搁浅。现在&#xff0c;我们为您带来了革命性的解决方案 —— 一个开源、免费、且功能强大的低代码开发平台&#xff01; 为什么选择我们的低代码平台&#…

游戏工作室如何利用惯性动作捕捉技术制作动画?

随着动捕设备不断进步和游戏行业的发展&#xff0c;惯性动作捕捉技术在游戏开发领域逐渐普及。惯性动作捕捉技术&#xff0c;可以精准捕捉现实世界中的真人动作&#xff0c;并将其精准应用于虚拟角色上&#xff0c;使游戏中的角色动作可以呈现出更写实、逼真和沉浸感&#xff0…