CSS选择器:伪类(图文详解)

本文最初发表于博客园,并在GitHub上持续更新前端的系列文章。欢迎在GitHub上关注我,一起入门和进阶前端。

以下是正文。

伪类(伪类选择器)

伪类:同一个标签,根据其不同的种状态,有不同的样式。这就叫做“伪类”。伪类用冒号来表示。

比如div是属于box类,这一点很明确,就是属于box类。但是a属于什么类?不明确。因为需要看用户点击前是什么状态,点击后是什么状态。所以,就叫做“伪类”。

静态伪类和动态伪类

伪类选择器分为两种。

(1)静态伪类:只能用于超链接的样式。如下:

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

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

(2)动态伪类:针对所有标签都适用的样式。如下:

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

PS:以上三种样式,只能用于超链接。

超链接a标签

超链接的四种状态

a标签有4种伪类(即对应四种状态),要求背诵。如下:

  • :link
    “链接”:超链接点击之前
  • :visited
    “访问过的”:链接被访问过之后
  • :hover
    “悬停”:鼠标放到标签上的时候
  • :active
    “激活”: 鼠标点击标签,但是不松手时。

对应的代码如下:(不带注释)

        a:link{color:red;}a:visited{color:orange;}a:hover{color:green;}a:active{color:black;}

对应的代码如下:(带注释)

       /*让超链接点击之前是红色*/a:link{color:red;}/*让超链接点击之后是绿色*/a:visited{color:orange;}/*鼠标悬停,放到标签上的时候*/a:hover{color:green;}/*鼠标点击链接,但是不松手的时候*/a:active{color:black;

记住,在css中,这四种状态必须按照固定的顺序写

a:link 、a:visited 、a:hover 、a:active

如果不按照顺序,那么将失效。“爱恨准则”:love hate。必须先爱,后恨。

看一下这四种状态的动图效果:

超链接的美化

问:既然

a{}
定义了超链的属性,和
a:link{}
定义了超链点击之前的属性,那这两个有啥区别呢?

答:

a{}
a:link{}
的区别:

  • a{}
    定义的样式针对所有的超链接(包括锚点)
  • a:link{}
    定义的样式针对所有写了href属性的超链接(不包括锚点)

超链接a标签在使用的时候,比较难。因为不仅仅要控制a这个盒子,也要控制它的伪类。

我们一定要将a标签写在前面,将

:link、:visited、:hover、:active
这些伪类写在后面。

举个例子。如果效果:

为了实现上面这个效果,完整版代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>Document</title><style type="text/css">*{margin: 0;padding: 0;}.nav{width: 960px;height: 50px;border: 1px solid red;margin: 100px auto;}.nav ul{/*去掉小圆点*/list-style: none;}.nav ul li{float: left;width: 120px;height: 50px;/*让内容水平居中*/text-align: center;/*让行高等于nav的高度,就可以保证内容垂直居中*/line-height: 50px;}.nav ul li a{display: block;width: 120px;height: 50px;}/*两个伪类的属性,可以用逗号隔开*/.nav ul li a:link , .nav ul li a:visited{text-decoration: none;background-color: purple;color:white;}.nav ul li a:hover{background-color: orange;}</style>
</head>
<body><div class="nav"><ul><li><a href="#">网站栏目</a></li><li><a href="#">网站栏目</a></li><li><a href="#">网站栏目</a></li><li><a href="#">网站栏目</a></li><li><a href="#">网站栏目</a></li><li><a href="#">网站栏目</a></li><li><a href="#">网站栏目</a></li><li><a href="#">网站栏目</a></li></ul></div>
</body>
</html>

上方代码中,我们发现,当我们在定义

a:link
a:visited
这两个伪类的时候,如果它们的属性相同,我们其实可以写在一起,用逗号隔开就好,摘抄如下:

        .nav ul li a{display: block;width: 120px;height: 50px;}/*两个伪类的属性,可以用逗号隔开*/.nav ul li a:link , .nav ul li a:visited{text-decoration: none;background-color: purple;color:white;}.nav ul li a:hover{background-color: orange;}

如上方代码所示,最标准的写法,就是把link、visited、hover这三个伪类都要写。但是前端开发工程师在大量的实践中,发现不写link、visited也挺兼容。写法是:

a:link、a:visited都是可以省略的,简写在a标签里面。也就是说,a标签涵盖了link、visited的状态(前提是都具有了相同的属性)。写法如下:

        .nav ul li a{display: block;width: 120px;height: 50px;text-decoration: none;background-color: purple;color:white;}.nav ul li a:hover{background-color: orange;}

当然了,在写

a:link
a:visited
这两个伪类的时候,要么同时写,要么同时不写。如果只写
a
属性和
a:link
属性,不规范。

动态伪类举例

我们在第一段中描述过,下面这三种动态伪类,针对所有标签都适用。

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

我们不妨来举下例子。

举例1:

  <style type="text/css">/*伪类选择器:动态伪类*//*让文本框获取焦点时:边框:#FF6F3D这种橙色文字:绿色背景色:#6a6a6a这种灰色*/input:focus{border:3px solid #FF6F3D;color:white;background-color:#6a6a6a;}/*鼠标放在标签上时显示蓝色*/label:hover{color:blue;}/*点击标签鼠标没有松开时显示红色*/label:active{color:red;}</style>

效果:

利用这个

hover
属性,我们同样对表格做一个样式的设置:
表格举例:

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>Document</title><style type="text/css">/*整个表格的样式*/table{width: 300px;height: 200px;border: 1px solid blue;/*border-collapse属性:对表格的线进行折叠*/border-collapse: collapse;}/*鼠标悬停时,让当前行显示#868686这种灰色*/table tr:hover{background: #868686;}/*每个单元格的样式*/table td{border:1px solid red;}</style></head><body><table><tr><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td></tr></table></body>
</html>

效果:

我的公众号

想学习代码之外的软技能?不妨关注我的微信公众号:生命团队(id:

vitateam
)。

扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:

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

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

相关文章

了解播放过滤器API

随着Play 2.1的热销&#xff0c;很多人开始询问新的Play过滤器API。 实际上&#xff0c;API非常简单&#xff1a; trait EssentialFilter {def apply(next: EssentialAction): EssentialAction }本质上&#xff0c;过滤器只是一个执行一个动作并返回另一个动作的函数。 过滤器…

mybatis 使用merge into

前一篇博客&#xff0c;oracle的merge into语法 &#xff1a; oracle merge into语法 mybatis 使用merge into&#xff0c;跟一般的update写法相同&#xff1a; <update id"mergeinfo">merge into user_type ausing ( select #{name} as name, #{type} as type…

php getbyid,ThinkPHP查询中的魔术方法简述

我们在使用thinkphp开发的时候&#xff0c;有时候会用到getById(1)这个方法快速的获取一条信息的内容&#xff0c;这个方法比用where(" id 1 ")->find()好用多了&#xff0c;同时查询效率也比find快速。很多人在刚开始接触这个方法的时候&#xff0c;没有多留意它…

DIV固定宽度和动态拉伸混合水平排列

1.效果图 2.源代码 html <h2>1.头部固定&#xff0c;尾部拉伸</h2> <div class"container" id"div1"><div class"head"></div><div class"tail"></div> </div><h2>2.尾部固定…

bzoj1941 [Sdoi2010]Hide and Seek

Description 小猪iPig在PKU刚上完了无聊的猪性代数课&#xff0c;天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞&#xff0c;为了消除寂寞感&#xff0c;他决定和他的好朋友giPi&#xff08;鸡皮&#xff09;玩一个更加寂寞的游戏—捉迷藏。 但是&#xff0c;他们觉得…

ubuntu修改ssh服务的端口号

一、找到ssh配置文件位置 vim /etc/ssh/sshd_config 二、修改ssh登录端口号 修改 port 22 为 port xxxx 三、重启ssh服务 /etc/init.d/ssh restart转载于:https://www.cnblogs.com/javafucker/p/8521316.html

使用CSS设置JavaFX饼图样式

渲染图表时&#xff0c; JavaFX默认提供某些颜色。 但是&#xff0c;在某些情况下&#xff0c;您想自定义这些颜色。 在此博客文章中&#xff0c;我将使用一个示例来更改JavaFX饼图的颜色&#xff0c;该示例打算在今天下午在RMOUG Training Days 2013的演示中包括。一些基于Jav…

python列表去重效率,你应该知道的python列表去重方法

前言列表去重是写Python脚本时常遇问题&#xff0c;因为不管源数据来自哪里&#xff0c;当我们转换成列表的方式时&#xff0c;有可能预期的结果不是我们最终的结果&#xff0c;最常见的就是列表中元素有重复&#xff0c;这时候第一件事我们就要做去重处理。我们先来个最简单的…

java 错误: 找不到或无法加载主类

这个问题应该很常见的&#xff0c;笔者经常手工编译一些测试代码或者小工具&#xff0c;经常用到 javac和java来编译并运行一些简单的小工具。 以Hello World来测试。 HelloWorld.java public class HelloWorld{public static void main(String[]args){System.out.println(&quo…

HTML 表单 存为EXCEL文件时 中文显示乱码

在做宣传品发放系统时&#xff0c;需求要把数据库查询的记录生成表单并转存excel文件。 在转存的EXCEL文件中文显示乱码&#xff0c;表格和其他字符正常&#xff0c;检查后发现是创建EXCEL文件打开模式不对 之前&#xff1a; myfile fs.CreateTextFile(filename,true) 之后…

在Visual Studio Code中配置GO开发环境

一、GO语言安装 详情查看&#xff1a;GO语言下载、安装、配置 二、GoLang插件介绍 对于Visual Studio Code开发工具&#xff0c;有一款优秀的GoLang插件&#xff0c;它的主页为&#xff1a;https://github.com/microsoft/vscode-go 这款插件的特性包括&#xff1a; Colorizatio…

最受欢迎的应用服务器

这是本系列的第二篇文章&#xff0c;我们将发布有关Java安装的统计数据。 使用的数据集来自免费的Plumbr安装&#xff0c;在过去六个月中&#xff0c;我们总共收集了1,024个不同的环境。 本系列的第一篇文章分析了基础-运行JVM的操作系统&#xff0c;是32位还是62位基础架构以…

SON_EXAM考试php,通用全国少儿英语等级考试:三星笔试真题

单项选择&#xff1a;36. exciting the game was! I enjoyed every minute of it.A.What B. How C.What an B.How an37.You stay here if youve finished your work.A.neednt B.mustnt C. shouldnt D.cant38 Nanjing Road in Shanghai is always crowded peole.A.with B.by c.o…

JS一些碎知识点

一些js基本知识点 Doctype 浏览器渲染模式 渲染模式发展历史在多年以前&#xff08;IE6诞生以前&#xff09;&#xff0c;各浏览器都处于各自比较封闭的发展中&#xff08;基本没有兼容性可谈&#xff09;。随着WEB的发展&#xff0c;兼容性问题的解决越来越显得迫切&#xff0…

CSS基础知识(display和visibility、overflow、文档流)

9、显示与隐藏 u display属性&#xff1a; (1)none&#xff1a;隐藏元素&#xff0c;不会再占有页面的任何空间&#xff0c;即不会影响布局。 (2)inline&#xff1a;默认值。将元素[显示]为内联元素 &#xff08;与HTML元素本身无关系&#xff09; (3)block&#xff1a…

浏览器滚动条样式更改

/* webkit内核浏览器 */::-webkit-scrollbar { width: 8px; }::-webkit-scrollbar-button { width: 8px; height: 5px; }::-webkit-scrollbar-track { background-color: #ddd; border-radius: 0px; }::-webkit-scrollbar-thumb { background: #999; border-radius: 0px; }::-w…

最受欢迎的Java环境

该职位将是即将发布的系列文章中的第一篇。 我们从所使用的环境开始&#xff1a;如果您感兴趣的是最受欢迎的JVM供应商或JVM版本&#xff0c;那么32bit是比64bit更流行的体系结构&#xff0c;还是Windows 8比Windows XP更流行的体系结构-这些都将在我们的文章中介绍。 在下一个…

爬空气质量MySQL,mysql

Flask 定了2中上下文&#xff0c;来实现机遇线程协程的&#xff0c;wsgi服务的请求(request、session)和存储(g&#xff0c;current_app )过程&#xff0c;通过栈来完成不同线程和协程的上下文切换&#xff0c;在与celery相结合处理异步任务时&#xff0c;需要保证异步任务在同…

使用宏实现透视表部分功能,将AB列数据合并统计.

功能:1.筛选B列;2.将A列中的值按照筛选后的结果进行合计. 这个特殊点是按照月日进行筛选的. Sub count_a() Dim sh As Worksheet Set sh ActiveSheet Range("C2:D" & [D65536].End(3).Row).Clear For line_b 2 To [B65536].End(3).Row If Len(Cells(line_b, &q…

HTML基础知识(常见元素、列表、链接元素、图片元素)

1、HTML有关概念 全称: Hyper Text Markup Language&#xff08;超文本标记语言&#xff09; 其文件扩展名为“.html”或“.htm” * 超文本 - 在普通的文本基础上&#xff0c;添加超链接、图片、音频或视频等 * 标记 - 标记就是HTML中的标签(元素)&#xff0c;特点:<a> …