CSS伪类选择器

news2025/1/23 2:14:34

CSS的选择器有很多种,有一种选择器,与其他选择器完全不同,我们来讲一讲这个选择器——伪类选择器

伪类选择器

伪类选择器:用来描述一个元素的特殊状态!比如第一个元素、某个元素的子元素、鼠标点击的元素

我们伪类选择器有几种,我们来看看第一种

静态伪类: 只能用于超链接的样式

  • :link 超链接点击之前
  • :visited 链接被访问过之后

以上两种样式,只能用于超链接

实际用法还得实际分析,我们来看看这一张图:

这里我写了两个超链接,看我箭头指的文章,你会发现这两个超链接颜色不一样

为什么会不一样呢?

因为第一个链接,是我访问过的网站链接

而第二个链接,我的浏览器没有访问过,系统会默认给访问过与没访问过的超链接显示不同的颜色

我们访问一下试试,看看他会不会变色

 访问过后,第二个超链接的颜色也变成了第一个一样了

那么我们想让没访问过的链接显示其他颜色呢?

这时候就需要我们的伪类选择器上场了,我们在style标签里面用css伪类选择一下

我们使用link来选择没有访问过的超链接

<style>
        a:link{color: aqua;}
</style>

注意,我们的伪类选择器是使用“:”来连接

我们在添加一个超链接,也是没有访问过的网址

我们看看效果

 这里,我们通过伪类选择器的link对没有访问过的网址进行颜色改变

而访问过的链接颜色没有变化

当我们访问之后,他也就不会被link选中了,所以访问过后,是这样的

 到这,有人就问了,访问之前可以被选择,那我想要访问后的链接也变色可不可以呢?

当然可以,事物都有对立一面,编程也一样,可以选择访问之前的超链接,那就肯定可以选择访问之后的超链接

我们写个访问之后的选择,让它变成其他颜色

<style>
        a:link{color: aqua;}
        a:visited{color: chartreuse;}
</style>

下面那个a:visited就是另一个选择属性了,他会选择被访问过的超链接

我们看看被访问过的超链接有没有变色

最后,再补充一点,看看这张图!

 我这里使用一个字体属性,将:visited选择中的字体变大,可是字体并没有改变,这是为什么呢???

因为为了保护隐私,我们的:visited只能改变颜色属性,其他都都不能改变,但是如果我改变:link选择的字体,将会是这样的

 不管是访问过还是没有访问过的链接,他都改变了字体!这个区别记住就可以,我这里给个测试代码,大家运行对比一下效果

<!DOCTYPE html>
<html lang="Zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>伪类选择器</title>

    <style>
        a:link{color: aqua;font-size: 10px;}
        a:visited{color: chartreuse;font-size: 50px;}
    </style>
</head>
<body>
    <h1>伪类选择器</h1>
    <h2>静态伪类</h2>
    <p>什么是静态伪类?</p>
    <a href="https://blog.janyork.com/">我的博客</a>
    <a href="https://hao.360.com/">360导航</a>
    <a href="https://qq.com/">腾讯网</a>
    <a href="https://google.com">GooGle</a>
</body>
</html>

 这是,两个静态的伪类选择,我们还有一些其他状态的伪类选择

我们继续讲几个

动态伪类:针对所有标签都适用的样式

  • :hover “悬停”:鼠标放到标签上的时候
  • :active “激活”: 鼠标点击标签,但是不松手时。
  • :focus 是某个标签获得焦点时的样式(比如某个输入框获得焦点)

我们经常看到一些网页,可以让鼠标的样式在其中发生改变,也就是说,我们这种标签,是对于鼠标产生效果

比如,我要写一个鼠标悬停变色,我就得用伪类选择器的:hover来选择,我们来写一个

<!DOCTYPE html>
<html lang="Zh-cn">
<head>
    <title>伪类选择器</title>
    <style>
        h3:hover{color: cyan;font-size: 25px;}
    </style>
</head>
<body>
    <h2>伪类选择器</h2>
    <h3>静态伪类选择</h3>
    <h3>动态伪类选择</h3>
    <h3>其他伪类选择</h3>
</body>
</html>

这里有三个h3标签,我们使用hover对他进行选择

    <style>
        h3:hover{color: cyan;font-size: 25px;}
    </style>

当我们鼠标移动到标题时,标题会变成天蓝色,字体变成25个像素大小

比如这样

 然后我们还可以看看第二个属性

:active可以让你鼠标点击但是不松开时显示你的CSS效果

我们也来写一下,直接加在上面的代码里面

    <style>
        h3:hover{color: cyan;font-size: 25px;}
        h3:active{color:darkmagenta;font-size: 10px;}
    </style>

这时,只要我在标题上按住左键,他就变成紫红色,字体缩小到10个像素大小

是不是觉得很好玩呢?

 那么我们现在就玩一玩剩下的:focus选择

这个可没什么意思了,他是针对于输入框等其他内容的,这里我演示不了,大家可以去W3里面试试这个效果:

CSS :focus 伪类 (w3school.com.cn)icon-default.png?t=L9C2https://www.w3school.com.cn/cssref/pr_pseudo_focus.asp#:~:text=%3Afocus%20%E4%BC%AA%E7%B1%BB%E5%9C%A8%E5%85%83%E7%B4%A0%E8%8E%B7%E5%BE%97%E7%84%A6%E7%82%B9%E6%97%B6%E5%90%91%E5%85%83%E7%B4%A0%E6%B7%BB%E5%8A%A0%E7%89%B9%E6%AE%8A%E7%9A%84%E6%A0%B7%E5%BC%8F%E3%80%82%20%E6%B3%A8%E9%87%8A%EF%BC%9A%20IE%20%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%8D%E6%94%AF%E6%8C%81%E6%AD%A4%E5%B1%9E%E6%80%A7%E3%80%82%20%E8%BF%99%E4%B8%AA%E4%BC%AA%E7%B1%BB%E5%BA%94%E7%94%A8%E4%BA%8E%E6%9C%89%E7%84%A6%E7%82%B9%E7%9A%84%E5%85%83%E7%B4%A0%E3%80%82,%E4%BE%8B%E5%A6%82%20HTML%20%E4%B8%AD%E4%B8%80%E4%B8%AA%E6%9C%89%E6%96%87%E6%9C%AC%E8%BE%93%E5%85%A5%E7%84%A6%E7%82%B9%E7%9A%84%E8%BE%93%E5%85%A5%E6%A1%86%EF%BC%8C%E5%85%B6%E4%B8%AD%E5%87%BA%E7%8E%B0%E4%BA%86%E6%96%87%E6%9C%AC%E8%BE%93%E5%85%A5%E5%85%89%E6%A0%87%EF%BC%9B%E4%B9%9F%E5%B0%B1%E6%98%AF%E8%AF%B4%EF%BC%8C%E5%9C%A8%E7%94%A8%E6%88%B7%E5%BC%80%E5%A7%8B%E9%94%AE%E5%85%A5%E6%97%B6%EF%BC%8C%E6%96%87%E6%9C%AC%E4%BC%9A%E8%BE%93%E5%85%A5%E5%88%B0%E8%BF%99%E4%B8%AA%E8%BE%93%E5%85%A5%E6%A1%86%E3%80%82%20%E5%85%B6%E4%BB%96%E5%85%83%E7%B4%A0%EF%BC%88%E5%A6%82%E8%B6%85%E9%93%BE%E6%8E%A5%EF%BC%89%E4%B9%9F%E5%8F%AF%E4%BB%A5%E6%9C%89%E7%84%A6%E7%82%B9%EF%BC%8C%E4%B8%8D%E8%BF%87%20CSS%20%E6%B2%A1%E6%9C%89%E5%AE%9A%E4%B9%89%E5%93%AA%E4%BA%9B%E5%85%83%E7%B4%A0%E5%8F%AF%E4%BB%A5%E6%9C%89%E7%84%A6%E7%82%B9%E3%80%82大家可以试试上面两个效果,不想亲自写可以复制我的,打开就可以观察属性变化了

<!DOCTYPE html>
<html lang="Zh-cn">
<head>
    <title>伪类选择器</title>
    <style>
        h3:hover{color: cyan;font-size: 25px;}
        h3:active{color:darkmagenta;font-size: 10px;}
        h3:focus{color: green;font-size: 30;}
    </style>
</head>
<body>
    <h2>伪类选择器</h2>
    <h3>静态伪类选择</h3>
    <h3>动态伪类选择</h3>
    <h3>其他伪类选择</h3>
</body>
</html>

其他伪类选择

我们有时候会用到一些像列表一样的结构,比如这样

<ui>
        <li>one</li>
        <li>two</li>
        <li>three</li>
        <li>four</li>
        <li>five</li>
    </ui>

如果我们想让它的第一个标签变色呢?该怎么选择?

有人说,那多简单啊,加个class或者id都可以

但是,当我将第一行删去,第二行就变成第一行,那此时第二行没有id,也没有class,那就不会变色,但是我要求第一行始终是我要的效果啊!

那,这个时候,就可以用我们的伪类选择器来写了,这次我们用一些平常不怎么用的选择属性

我们可以这样写,先看代码再分析

<!DOCTYPE html>
<html lang="Zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>其他伪类选择</title>
    <style>
        li:first-child{color: green;}
    </style>
</head>
<body>
    <ui>
        <li>one</li>
        <li>two</li>
        <li>three</li>
        <li>four</li>
        <li>five</li>
    </ui>
</body>
</html>

这里我们使用:first-child选择li标签第一个元素,让他变成绿色,注意了,他是始终选择第一行

我们看看效果:

 这个时候,我们删掉第一行,此时第二行变成了第一行

 此时,这个第一行仍然是绿色

那么有人就问了,可不可以让最后一个标签也始终有CSS的效果?当然可以!

我们使用:last-child可以达到这个效果,我这里就不做演示了,自己尝试

那既然这样也可以,又有人问了,我想让他其他行数保持属性呢?或者说我想让他单数行或者双数行改变属性呢?

当然,也可以实现,我们还要一个选择器——:nth-child()

这个选择器有一个(),这个括号是干嘛的?当然是填你要改变的行数的,比如,改变所有行数样式可以这样:nth-child(n)

改变第2行的颜色就是这样写:

li:nth-child(2){color: mediumvioletred;}

当然,既然括号里面可以指的数字,那我岂不是可以玩玩算法,我可以这样li:nth-child(2n)

还真没错,真可以,效果是这样的

 那么,既然可以怎么玩,那么剩下的就自己研究吧!不过,其实选择单数双数有更简单的,不需要2n

Odd 和 even 是可用于匹配下标是奇数或偶数的子元素的关键词(第一个子元素的下标是 1)

所以,这样就可以:

:nth-child(odd)
:nth-child(even)

不多说,大家自己去多试试吧!

嘿嘿嘿!别以为就这样完了,我再说个让伪类选择更简单的选择

我们上面的选择都是直接选择,但是我们还有一种伪类选择,可以反选,什么是反选?就是除了我选中的,其余都执行CSS效果

这个选择器就是 li:not(),这个括号里面填需要排除的元素,比如我需要让除第一个元素,其他元素都变红色,我可以这样写

<!DOCTYPE html>
<html lang="Zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>其他伪类选择</title>
    <style>
        li:not(li:first-child){color: orangered;}
    </style>
</head>
<body>
    <ui>
        <!-- <li>one</li> -->
        <li>two</li>
        <li>three</li>
        <li>four</li>
        <li>five</li>
        <li>two</li>
        <li>three</li>
        <li>four</li>
        <li>five</li>
    </ui>
</body>
</html>

这样就选择了li标签中除了li:first-child的所有元素,效果是这样的:

 最后,你有没有发现,我这个ui、标签里面全都是li标签,所以我每次都是选择li标签,但是我要是再里面加入其他标签,他也还是只改变li标签,比如这样:

 这个CSS效果没有让第一个元素变色,也没有让第一个li标签变色,像这样的情况,我们就应该用另一个选择方式——:first-of-type

这个是直接选择父元素标签内指定标签的第一个元素,这样这个CSS效果就不会像上面那个一样失效

所以,有时候写代码,发现CSS失效,可以看看是不是这个原因

好了,伪类的选择器就讲到这,下次再说一说伪元素

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS系列之盒子阴影box-shadow(CSS3)

文章の目录1、属性值规则2、取值2.1、inset 内/外阴影2.2、<offset-x> <offset-y>水平阴影/垂直阴影2.3、<blur-radius>模糊距离2.4、<spread-radius>阴影的尺寸2.5、<color>阴影的颜色3、示例4、注意点写在最后用于在元素的框架上添加阴影效果。…

【javaScript】学完js基础,顺便把js高级语法学了(尚硅谷视频学习笔记)

文章目录【1】基本总结深入一、什么是数据1、数据类型基本&#xff08;值&#xff09;类型对象&#xff08;引用&#xff09;类型2、判断相关问题二、什么是内存1、什么是数据2、什么是内存&#xff1f;3、什么是变量4、内存、数据、变量三者之间的关系相关问题1、问题&#xf…

【web系列十一】使用django创建数据库表

目录 基本介绍 Model ORM 创建数据库的流程 安装插件 安装python中操作MySQL的库&#xff0c;这里用了django官方推荐的mysqlclient 创建数据库 连接数据库 1、工程同名app下的settings.py 2、子应用的models.py 3、子应用中的admin.py 生成数据表 1、更新数据表变…

element-ui 修改el-form-item样式

文章目录form结构修改el-form-item所有样式只修改label只修改content只修改input只修改buttonform结构 <el-form :model"formData" label-width"80px"><el-form-item label"label1"><el-input v-model"formData.value1&quo…

vue中使用wangEditor以及设置菜单栏

首先安装&#xff0c;我最开始是安装wangEditor v5版本的也就是安装方式是下面两个 npm install wangeditor/editor-for-vue --save npm install wangeditor/editor --save 但是最后跟着官网的视频教程安装好了&#xff0c;不能够运行&#xff0c;提示是&#xff1a;Module par…

antd中的form表单中的wrapperCol和labelCol问题

之前在学这块时候比较模糊 有点不熟 以至于在后来的开发过程中看别人的代码中的xs sm等 以及{span&#xff1a;8}也表示困惑&#xff0c; 但也不敢问大佬&#xff08;怕因为太简单而被嘲讽&#xff09;&#xff0c;只能自己去百度去了解&#xff0c;总算是有些眉目&#xff0c;…

vue xlsx插件导入

首先安装xlsx插件 yarn add xlsx0.15.3安装时候就有一个坑。版本问题第一次安装没有指定版本直接yarn add xlsx&#xff0c;安装的最新版本0.18多&#xff0c;会报XLSX没有read方法&#xff08;读取Excel表格对象的方法&#xff09; 具体代码 <el-upload class"uplo…

uniapp配置网络请求

1.简介 由于平台的限制&#xff0c;小程序项目中不支持 axios&#xff0c;而且原生的 wx.request() API 功能较为简单&#xff0c;不支持拦截器等全局定制的功能。因此&#xff0c;建议在 uni-app 项目中使用 escook/request-miniprogram 第三方包发起网络数据请求。 官方文…

JavaScript常见数组方法,教你如何转置矩阵

&#x1f4dc;个人简介 ⭐️个人主页&#xff1a;微风洋洋&#x1f64b;‍♂️ &#x1f351;博客领域&#xff1a;编程基础,后端 &#x1f345;写作风格&#xff1a;干货,干货,还是tmd的干货 &#x1f338;精选专栏&#xff1a;【JavaScript】 &#x1f680;支持洋锅&#xff…

git提交规范,规范自己的提交标准

为了规范我的git提交内容&#xff0c;提交的时候commit -m “备注的信息”&#xff0c;但是每个人的备注信息千奇百怪&#xff0c;为了统一&#xff0c;我们进行了git的规范。 首先要全局安装commitizen npm i -g commitizen4.2.4然后安装插件 npm i cz-customizable6.3.0…

javascript获取url信息的常见方法

1、获取页面完整的url 1 2 var alocation.href; console.log(a); // “http://www.cnblogs.com/wuxibolgs329/p/5261577.html#flag?test12345” 2、获取页面的域名 var host window.location.host; //www.cnblogs.com var host2 document.domain; //www.cnblogs.com …

学生管理系统Element UI版

&#x1f482; 个人主页: 陶然同学&#x1f91f; 版权: 本文由【陶然同学】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦&#x1f485; 想寻找共同成长的小伙伴&#xff0c;请点击【Java全栈开发社区】…

微前端 - qiankun

前言 qiankun 是一个基于 single-spa 的微前端实现库&#xff0c;旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。 本文主要记录下如何接入 qiankun 微前端。主应用使用 vue2&#xff0c;子应用使用 vue3、react。 一、主应用 主应用不限技术栈&#xff0c;只需…

前后端分离式交互

目录 前言 1.javaEE环境安装 第一步&#xff1a;正常创建javase项目 第二步&#xff1a;右击项目&#xff0c;引入框架支持 第三步&#xff1a;将项目部署到Tomcat服务器上。Tomcat安装及配置 2.servlet搭建 请求格式为&#xff1a;ip:端口/项目名/servlet地址 3.servl…

uniapp -- 扫码记录(针对app场景)

背景 扫码需求日益增多&#xff0c;为了满足客户的需求&#xff0c;扫码演变的多种多样&#xff0c;其中有二维码&#xff0c;条形码居中&#xff0c;条形码又可以细分成几种,以下记录全屏和自定义页面扫码的在uniapp的技术实现 全屏扫码 uniapp自身带的api方法-uni.scanCod…

vscode的vue代码提示与补全没反应(vetur问题)

问题&#xff1a;vscode的里面写vue时候代码提示用不了了 问题原因&#xff1a;vetur这个插件升级了&#xff0c;与老版本的vscode不适配了 解决方案&#xff1a; 1.卸载vscode&#xff0c;与vscode官网下载最新版本vscode 2.安装老版本的vetur(感谢评论区另一个大佬推荐的…

刷题日常计~JS③

作者 : SYFStrive 博客首页 : 点击跳转HomePage &#x1f4dc;&#xff1a; 初编程JavaScript之每天10题 &#x1f449; 从质变到量变&#x1f4aa; &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f5…

关于WEB-INF目录及Tomcat部署方式、原理的简单理解

个人学习所用&#xff0c;有不足或错误之处欢迎指正和补充&#xff01; 目录 前言&#xff1a; 一、WEB-INF目录与META-INF目录 1. Web应用程序的目录结构 2. WEB-INF简介 3. WEB-INF的作用 4. 静态资源的访问 二、Tomcat部署本地工件 1. war和war exploded的区别 2.…

【HTML小游戏】推箱子网页版(附完整源码)

最近刚刚更新完了HTML,CSS的万字总结,有很多人已经学习完了文章,感觉反馈还不错,今天,用HTML,CSS,JS的知识编写了一个童年经典游戏 - 推箱子,供学习参考。 文章目录 1. 效果展示2. 游戏介绍3. 游戏规则4. 源码学习1. 效果展示 游戏主界面展示: 游戏界面展示: 2. 游戏…

ECMAScript6新特性【数组扩展(扩展运算符、新增方法一、新增方法二、新增方法三)】(四)-全面详解(学习总结---从入门到深化)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域新星创作者 &#x1f4d5;系列专栏&#xff1a;前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…