CSS 伪类与伪元素

2023-05-16

CSS的元素选择器除了根据id(#)、class(.)、属性([ ])选取元素以外,还有很重要的一类,就是根据元素的特殊状态来选取元素。它们就是伪类和伪元素。跟id选择器、类选择器、属性选择器以及派生选择器等等这些从HTML文档层次结构(DOM树)中获取元素不同的是,伪类和伪元素是预定义的、独立于文档元素的。它们获取元素的途径也不是基于id、class、属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素)。当然,伪类和伪元素的表示形式也使用“:”(英文冒号)与其它选择器相区分。

伪类

伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。

 

:link

伪类将应用于未被访问过的链接,与:visited互斥。

:hover

伪类将应用于有鼠标指针悬停于其上的元素。

:active

伪类将应用于被激活的元素,如被点击的链接、被按下的按钮等。

:visited

伪类将应用于已经被访问过的链接,与:link互斥。

 

下面的示例是对上述4个伪类效果的展示:

<html>
<head>
<meta content="text/html"charset="utf-8" />
<style type="text/css">
a:link {color: #FF0000}
a:visited {color: #00FF00}
a:hover {color: #FF00FF}
a:active {color: #0000FF}
</style>
</head>
<body>
<ahref="http://www.baidu.com">百度</a>
</body>
</html>

需要注意的是在CSS的定义中,同一个元素的:hover必须位于:link、:visited之后才能生效,:active必须位于:hover之后才能生效。

 

:focus

伪类将应用于拥有键盘输入焦点的元素。

:first-child

伪类将应用于元素在页面中第一次出现的时候。

:lang

伪类将应用于元素带有指定lang的情况。

 

下面的示例展示了上述3个伪类的效果:

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta charset="utf-8"content="text/html" />
<title></title>
<style type="text/css">
div:first-child {
         background:#0F0;
}
 
textarea:focus {
         background:#F00;
}
 
div:lang(zh) {
         background:#00F;
}
</style>
</head>
<body>
<div>
         <textarea></textarea>
</div>
<div>
         <textarea></textarea>
</div>
<div lang="zh">
         <textarea></textarea>
</div>
</body>
</html>

 

伪元素

与伪类针对特殊状态的元素不同的是,伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。实际上,设计伪元素的目的就是去选取诸如元素内容第一个字(母)、第一行,选取某些内容前面或后面这种普通的选择器无法完成的工作。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于文档中,所以叫伪元素。

 

:first-letter

伪元素的样式将应用于元素文本的第一个字(母)。

:first-line

伪元素的样式将应用于元素文本的第一行。

:before

在元素内容的最前面添加新内容。

:after

在元素内容的最后面添加新内容。

 

:before和:after通常与CSS内容生成配合使用,笔者会在下一篇博文中用到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS 伪类与伪元素 的相关文章

随机推荐

  • K8s---网络通信 Configmap secrer volumesk8s

    k8s网络通信简介 k8s通过CNI接口接入其他插件来实现网络通讯 目前比较流行的插件有flannel xff0c calico等 CNI插件存放位置 xff1a cat etc cni net d 10 flannel conflist
  • Linux进程管理动态查看进程top

    目录 一 解读top命令的显示信息 1 上半部分解读 xff08 前五行 xff09 2 后半部分 xff08 进程信息 xff09 二 top常用内部指令 一 解读top命令的显示信息 命令 xff1a top 注意 xff1a 在top
  • ENSP基本命令和小实验

    ENSP基本命令和小实验 ENSP基本命令1 历史命令查询2 配置主机名3 状态信息查询4 进入接口模式并查看信息5 配置文件管理命令6 关闭华为的信息提示中心7 永不超时8 配置双工及速率命令9 保存配置10 用SecureCRT链接eN
  • 一个刚毕业大学生的四个月苦逼程序员经历

    先来一个自我介绍 大学时排名老三 就暂且叫老三吧 xff0c 毕业于河南的一个还算可以的二本院校 xff0c 专业 地球信息科学与技术 首先介绍一下我的专业 xff0c 听着名字很高大上 xff0c 其实 xff0c 我们都叫他四不像专业
  • windows10系统下基于pybind11库进行c++代码调用python(pytorch)代码

    最近在学习基于lidar mos进行slam激光点云动态物体剔除的相关内容 xff0c 经过调研准备基于pybind11库在实际项目 c 43 43 中调用salsaNext代码 python 使用cmake在测试项目中引入pybind11
  • 事件流是什么

    事件流分为事件冒泡和事件捕获 事件流 xff1a 就是事件的流向 xff0c 先捕获 xff0c 再到事件源 xff0c 最后再冒泡 xff0c 一共分三个阶段 xff1a 捕获阶段 xff0c 事件源 xff0c 冒泡阶段 从上至下再出来
  • 实现浏览器访问基于workman的异步任务

    准备工作 xff1a 安装workman xff0c 引入 目录 xff1a 进程任务服务端service php 提交任务服务端service transit php index php cli模式开启service php和servic
  • socket套接字编程---UDP通信流程和代码编写

    文章目录 1 UDP通信流程和接口介绍1 1UDP通信流程 xff1a 1 2接口介绍 xff1a 1 2 1创建套接字1 2 2为套接字绑定地址信息1 2 3发送数据1 2 4接收数据1 2 5 关闭套接字 释放资源 2 UDP通信代码实
  • 关于嵌入式高级项目小组的规划(初稿)

    关于嵌入式高级项目小组的规划 xff08 初稿 xff09 一 想法初衷 大家好 xff0c 我是一个嵌入式爱好者 虽然不是电子专业 xff0c 也不是软件这些相关的专业 xff0c 但我就是感兴趣 xff0c 从做8位单片机实验到现在自学
  • 嵌入式算法11---矩阵转置与压缩

    在整个物联网系统中 xff0c 嵌入式设备作为数据采集 过滤 缓存 传输的节点 xff0c 前面系列文章分别介绍了嵌入式设备相关的各种数据过滤 校验和压缩存储算法 缓存和传输阶段 xff0c 考虑到嵌入式设备的存储空间和传输带宽限制 xff
  • win10下安装Ubuntu16.04双系统

    win10下安装Ubuntu16 04双系统 最近由于想体验一下Ubuntu系统 xff0c 由于虚拟机的体验不是很好 xff0c 所以便在电脑上试下装双系统 自己也是一步步按着网上的帖子来 xff0c 由于网上的教程都不是最新的而且有的也
  • 【Vue入门实践3】不调后端接口==>el-table单纯前端实现查询和重置功能==>【el-table组件使用】表格静态前端筛选、查询重置功能

    一个人的心理健康程度与接纳痛苦的程度成正比 感谢自己的不完美 目录 一 功能效果描述 二 el table自带筛选功能 三 前端假查询重置功能 1 el form表单 2 el table表格数据 3 search功能 4 reset重置功
  • 控制理论简要介绍

    文章目录 鲁棒控制自适应控制滑膜控制 xff08 变结构控制 xff09 模型预测控制 MPC RBF神经网络 xff08 单隐层神经网络 xff09 xff1a 模糊控制 鲁棒控制 xff08 H无穷 H2 混合控制和LMI控制 xff0
  • ConcurrentHashMap、synchronized与线程安全

    最近做的项目中遇到一个问题 xff1a 明明用了ConcurrentHashMap xff0c 可是始终线程不安全 除去项目中的业务逻辑 xff0c 简化后的代码如下 xff1a public class Test40 public sta
  • Spring MVC集成slf4j-logback

    1 Spring MVC集成slf4j log4j 关于slf4j和log4j的相关介绍和用法 xff0c 网上有很多文章可供参考 xff0c 但是关于logback的 xff0c 尤其是Spring MVC集成logback的 xff0c
  • Spring Bean 创建过程

    0 通常 xff0c 无论是DispatcherServlet ContextLoaderListener还是ClassPathXmlApplicationContext xff0c 首次实例化bean的入口并不是在每次调用getBean的
  • MySQL DataSource 性能对比(2015-8-19)

    1 本地性能测试耗时 xff08 一 xff09 共同条件 xff1a 测试程序与数据库在同一台主机上 xff0c 各DataSource均采用默认配置 xff0c 每个线程循环1000次 xff0c 查询语句为select from ta
  • MySQL 乐观锁 简例

    乐观锁与悲观锁不同的是 xff0c 它是一种逻辑上的锁 xff0c 而不需要数据库提供锁机制来支持 当数据很重要 xff0c 回滚或重试一次需要很大的开销时 xff0c 需要保证操作的ACID性质 xff0c 此时应该采用悲观锁 而当数据对
  • HTML5 Canvas 初步:字符串,路径,背景,图片

    HTML5中新增了 lt canvas gt 画布标签 xff0c 通过它 xff0c 可以使用JavaScript在网页中绘制图像 lt canvas gt 标签在网页中得到的是一个矩形空白区域 xff0c 可以通过width和heigh
  • CSS 伪类与伪元素

    CSS的元素选择器除了根据id xff08 xff09 class xff08 xff09 属性 xff08 xff09 选取元素以外 xff0c 还有很重要的一类 xff0c 就是根据元素的特殊状态来选取元素 它们就是伪类和伪元素 跟id