CSS伪类选择器详细讲解

前言
伪类选择器在CSS中起到的作用可以说是至关重要的,如果CSS没有伪类选择器,有很多效果都要借助js来完成,这样不仅代码量增加,维护起来你难度也大。这样程序员的工作量大,也违背了CSS诞生的作用,就是提高开发效率,在同等的世间里完成更高质量的开发。

一篇文章让大家对CSS伪类有个全新的认识,相信有不少人应该有过一定的底子,虽然我写这篇文章是为了小白对CSS3伪类有个客观且全新的了解,不过对于入门的同学也用一定的作用,这篇文章有很多实用的用法可能在以前的学习中很少遇到以及见都没见过,对于这类同学们可以快速浏览看完,对于以前没遇到过得可以上手练练。对于大神级别的大佬,如果我这篇文章写得不好或者哪没写好写错的请给予建议。

虽然我这篇文章是零基础小白教程,可同学们也应该认真对待。看完要勤加练习,不然都会忘光的,所谓“温故而知新”,对于编程而言也同样适用。这里推荐个可以随时随地学编程的官网,旗下还有APP可以随时随地编程。

w3school链接:w3school

正文

伪类选择器包括伪类和伪类对象选择器,伪类选择器以冒号( : )作为前缀标识符。 冒号前可以添加选择符,限定伪类应用的范围,冒号后为伪类和伪类对象名,冒号前后没有空格,否则将认为类选择器,如图所示。

在这里插入图片描述

下面表格包含了大部分伪类选择器:

伪类选择器
动态伪类
:link

链接没有被访问前的样式效果
:visited 链接被访问后的样式效果
:hover 鼠标悬停在元素上面时的样式效果
:active 点击元素时的样式效果,即按下鼠标左键时发生的样式
:focus 用于元素成为焦点时的样式效果,常用与表单元素
结构伪类
:first-child 选择某个元素下的第一个子元素
:last-child 选择某个元素下的最后一个子元素
:nth-child() 选择某个元素下的一个或多个特定的子元素
:nth-last-child() 选择某个元素的一个或多个特定的子元素,从后往前数
:nth-of-type() 选择指定的元素
:nth-last-of-type() 选择指定的元素,从后往前数
:first-of-type 选择一个父级元素下的第一个同类型子元素
:last-of-type 选择一个父级元素下的第一个同类型子元素,从后往前数
:only-child 选择的元素是它父元素的唯一 一个子元素
:only-of-type 选择一个元素是上级元素下唯一相同类型的子元素
:empty 选择的元素里面没有任何内容(空标签)
否定伪类
:not() 排查或者过滤掉特定元素
状态伪类
:enabled 选择匹配指定范围内所有可用UI(用户界面)元素
:disabled 选择匹配指定范围内所有不可用UI(用户界面)元素
:checked 选择匹配指定范围内所有可用UI(用户界面)元素
目标伪类
:target 选择匹配父元素的所有元素,且匹配元素被相关URL指向
-------------有很多伪类选择器存在于IE低版本兼容性问题,在练习中不建议使用IE预览

味蕾选择器.
动态伪类
:link链接没有被访问前的样式效果
:visited链接被访问后的样式效果
:hover鼠标悬停在元素上面时的样式效果
:active点击元素时的样式效果,即按下鼠标左键时发生的样式
:focus用于元素成为焦点时的样式效果,常用与表单元素
==结构伪类 ==
:first-child选择某个元素下的第一个子元素
:last-child 选择某个元素下的最后一个子元素
:nth-child()选择某个元素下的一个或多个特定的子元素
:nth-last-child()
动态伪类选择某个元素的一个或多个特定的子元素,从后往前数
:nth-of-type()选择指定的元素
:nth-last-of-type()选择指定的元素,从后往前数
:first-of-type选择一个父级元素下的第一个同类型子元素
:last-of-type选择一个父级元素下的第一个同类型子元素,从后往前数
:only-child选择的元素是它父元素的唯一 一个子元素
:only-of-type选择一个元素是上级元素下唯一相同类型的子元素
:empty选择的元素里面没有任何内容(空标签)
否定伪类
:not()排查或者过滤掉特定元素
状态伪类
:enabled选择匹配指定范围内所有可用UI(用户界面)元素
:disabled选择匹配指定范围内所有不可用UI(用户界面)元素
:checked选择匹配指定范围内所有可用UI(用户界面)元素
目标伪类
:target选择匹配父元素的所有元素,且匹配元素被相关URL指向
-------------有很多伪类选择器存在于IE低版本兼容性问题,在练习中不建议使用IE预览

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

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

相关文章

JSP:Javabean

起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean。 随着技术的不断发展与项目的需求&am…

CentOS8安装MySQL

选择MySQL数据库的原因: 1、运行速度快; 2、开源免费; 3、易学易用; 4、可移植性,能够在众多不同的系统上工作; 5、丰富的接口,提供了用于C、C等语言的API; 6、支持查询语言&#xf…

设计循环队列(详解)

呀哈喽,我是结衣 今天给大家带来的内容如标题所述,我们来设计环形队列,虽然队列没有讲,但是我就是想讲啊。那么环形队列现在开始。 队列的属性 在设计环形队列前,我们先要了解队列的特点(先进先出&#x…

C语言回文数(1106:回文数(函数专题))

题目描述 一个正整数&#xff0c;如果从左向 右读&#xff08;称之为正序数&#xff09;和从右向左读&#xff08;称之为倒序数&#xff09;是一样的&#xff0c;这样的数就叫回文数。输入两个整数m和n&#xff08;m<n)&#xff0c;输出区间[m&#xff0c;n]之间的回文数。 …

年底了,我劝大家真别轻易离职...

年底了&#xff0c;一些不满现状&#xff0c;被外界的“高薪”“好福利”吸引的人&#xff0c;一般就在这时候毅然决然地跳槽了。 在此展示一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的软件测试…

vue history路径编码

记录今天遇到的一个问题&#xff1a; 问题现状 有一个需要前端伪造302进行重定向的需求&#xff0c;我们需要将这样的一个路径&#xff1a;http://xxx.com/system-name/#/index&#xff0c;拼接在跳转地址的后面&#xff0c;进行重定向。拼接的方式是这样的&#xff1a; htt…

Linux文件

目录 一、基本概念 二、研究进程和被打开文件的关系 &#xff08;一&#xff09;w方式 &#xff08;二&#xff09;a方式 三、认识系统接口&#xff0c;操作文件 &#xff08;一&#xff09;认识文件描述符 &#xff08;二&#xff09;举例 &#xff08;三&#xff09;…

3分钟使用 WebSocket 搭建属于自己的聊天室(WebSocket 原理、应用解析)

文章目录 WebSocket 的由来WebSocket 是什么WebSocket 优缺点优点缺点 WebSocket 适用场景主流浏览器对 WebSocket 的兼容性WebSocket 通信过程以及原理建立连接具体过程示例Sec-WebSocket-KeySec-WebSocket-Extensions 数据通信数据帧帧头&#xff08;Frame Header&#xff09…

配置静态 Eth-trunk

1、需求 1&#xff09;交换网络中存在2个 VLAN – 10 和 20 2&#xff09;每个VLAN的IP地址为&#xff1a;192.168.xx.0/24&#xff08;xx为 vlan 号&#xff09; 3&#xff09;对交换机之间的链路进行链路捆绑&#xff0c;增加互联带宽 4&#xff09;确保同 VLAN的 PC 之间互…

clang+llvm多进程gdb调试

clangllvm多进程gdb调试 前言1. 命令行gdb2. 父进程调试3. 子进程调试4. 返回父进程 前言 在学习新增llvm的优化pass时&#xff0c;需要跟踪clang及llvm的调用栈。然而llvm通过posix_spawn()创建了新进程&#xff0c;这使得gdb调试必须有一定的技巧了。 1. 命令行gdb 以下命…

linux部署jar 常见问题

1.java -jar xxx.jar no main manifest attribute, in xxx.jar 一.no main manifest attribute, in xxx.jar 在pom.xml文件中加入&#xff1a; <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifac…

io+day5

1&#xff0c;select服务端 1 #include<myhead.h>2 3 #define PORT 8888 //端口号4 #define IP "192.168.228.165" //IP地址5 6 7 int main(int argc, const char *argv[])8 {9 //1、创建用于接受连接的套接字10 int sfd socket(…