伪元素和伪类的区别和作用?

news2024/10/5 19:14:42

什么是伪元素和伪类

伪元素
伪元素(pseudo-elements)是CSS中的一种选择器,用于选择元素的特定部分而不是整个元素本身。伪元素允许你在已选择的元素内部创建或修改内容,而无需在文档结构中添加额外的HTML元素。伪元素的语法以::(双冒号)作为前缀,如::before::after

以下是一些常见的伪元素及其主要作用:

  1. ::before:用于在所选元素的内容之前插入生成的内容。这通常用于在元素前面添加一些装饰性的内容,比如图标或文本。

  2. ::after:用于在所选元素的内容之后插入生成的内容。类似于::before,它也经常用于添加额外的装饰性元素。

  3. ::first-line:用于选择所选元素的第一行文本。你可以使用它来为文本的第一行应用特定的样式。

  4. ::first-letter:用于选择所选元素的第一个字母或字符。通常用于创建首字母大写或特殊的样式。

  5. ::selection:用于选择用户选择的文本部分(鼠标拖选时)。你可以使用它来自定义选中文本的样式。

伪类
伪类(pseudo-class)是CSS中的一种选择器,用于选择HTML元素的特定状态或关系,而不是选择元素本身。伪类可以根据用户交互、元素的位置、链接状态等条件来选择元素,从而允许你应用不同的样式或行为。伪类的语法以:(单冒号)作为前缀,如:hover:first-child

以下是一些常见的伪类及其主要作用:

  1. :hover:用于选择用户鼠标悬停在元素上时的状态。通常用于创建悬停效果,如改变链接的颜色或显示工具提示。

  2. :active:用于选择用户点击元素时的状态。通常用于创建点击效果,如按钮按下时的变化。

  3. :focus:用于选择元素获得焦点时的状态,通常用于表单元素,如文本框或按钮,以突出显示当前激活的元素。

  4. :first-child:选择父元素的第一个子元素。这可用于设置第一个子元素的特定样式。

  5. :nth-child(n):选择父元素的第n个子元素。你可以使用这个伪类来选择元素列表中的某个特定元素。

  6. :not(selector):选择不匹配给定选择器的元素。这允许你排除某些元素以应用样式。

  7. :visited:选择已访问的链接元素,通常用于改变已访问链接的样式。

总结: 伪元素创建了抽象元素,而伪类代表了元素的特殊状态。注意语法上的区别,伪元素使用:: 伪类使用:

使用场景

1、:hover鼠标悬停

<!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>
      .parent {
        padding: 30px;
      }
      .child:hover {
        cursor: pointer;
        color: aqua;
      }
    </style>
  </head>
  <body>
    <div class="parent">
      <div class="child">一段文字</div>
    </div>
  </body>
</html>

当鼠标悬停文字颜色就变了。
在这里插入图片描述
2、:active 鼠标按下的状态

.child:active {
  cursor: pointer;
  color: red;
 }

在这里插入图片描述
3、:focus激活状态的样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        .input {
            width: 200px;
            padding: 10px;
            border: 2px solid #ccc;
        }

        .input:focus {
            border-color: blue;
            outline: none; /* 可选,用于去除默认的焦点边框 */
        }
    </style>
</head>
<body>
    <label for="example">输入框:</label>
    <input type="text" id="example" class="input">
</body>
</html>

激活后:
在这里插入图片描述
4、:first-child :nth-child(n)。类似还有:first-of-type。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      ul li:nth-child(2) {
        background-color: yellow;
      }
      ul li:first-child {
        color: blue;
      }
    </style>
  </head>
  <body>
    <ul>
      <li>第一个子元素</li>
      <li>第二个子元素</li>
      <li>第三个子元素</li>
    </ul>
  </body>
</html>

在这里插入图片描述

5、:not(selector) 伪类用于选择不匹配指定选择器的元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        p:not(.special) {
            font-weight: bold;
        }
    </style>
</head>
<body>
    <p>This is a normal paragraph.</p>
    <p class="special">This is a special paragraph.</p>
    <p>This is another normal paragraph.</p>
</body>
</html>

在这里插入图片描述
6、::before

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      .custom-button::before {
        content: "\2713"; /* Unicode字符 ✓ 代表勾号 */
        margin-right: 5px; /* 添加一些间距 */
        color: green; /* 颜色为绿色 */
      }

      .custom-button {
        background-color: lightblue;
        padding: 10px 20px;
        border: none;
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <button class="custom-button">点击这里</button>
  </body>
</html>

在这个示例中,定义了一个 .custom-button 类,并使用 ::before 伪元素在按钮文本前插入一个勾号图标。通过设置 content 属性为 “\2713”(Unicode字符 ✓)。
在这里插入图片描述
7、::after

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      .quote::after {
        content: "\201D"; /* Unicode字符 ” 代表右双引号 */
        color: #999;
      }

      .quote {
        font-size: 18px;
        font-style: italic;
      }
    </style>
  </head>
  <body>
    <p class="quote">这是一段带有引用的文本。</p>
  </body>
</html>

在这个示例中,定义了一个 .quote 类,并使用 ::after 伪元素在引用文本后插入右双引号。通过设置 content 属性为 “\201D”(Unicode字符 ”)。
在这里插入图片描述
8、::first-line、::first-letter 和 ::selection

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <style>
      p {
        width: 100px;
      }
      p::first-line {
        font-weight: bold;
        color: blue;
      }
      p::first-letter {
        font-size: 24px;
        color: red;
      }
      ::selection {
        background-color: yellow;
        color: black;
      }
    </style>
  </head>
  <body>
    <p>
      This is the first line of text. The rest of the text goes here. This is
      just an example.
    </p>
  </body>
</html>

例子中分别给第一行设置了加粗且文字颜色是蓝色、给第一个字符设置了大小及颜色、选中文字黄色背景。

第六行是一个选中颜色的效果
在这里插入图片描述

本文只是列举了一些伪类和伪元素以及它们的一点小用法。伪元素和伪类还有很多用处。

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

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

相关文章

基于局部结构特征的图像匹配

目录 第一章 绪论........................................................................ 6 1.1 研究课题背景....................................................... 6 1.2 图像匹配技术国内外发展现状........................... 8 1.3 课题研究的目的......…

FBI分享AvosLocker勒索软件的技术细节和防御建议

导语 近日&#xff0c;美国联邦调查局&#xff08;FBI&#xff09;和网络安全与基础设施安全局&#xff08;CISA&#xff09;联合发布了一份关于AvosLocker勒索软件的技术细节和防御建议的联合网络安全公告。该公告详细介绍了AvosLocker勒索软件的攻击方式和使用的工具&#xf…

MFF论文笔记

论文名称&#xff1a;Improving Pixel-based MIM by Reducing Wasted Modeling Capability_发表时间&#xff1a;ICCV2023 作者及组织&#xff1a;上海人工智能实验室&#xff0c;西门菲沙大学&#xff0c;香港中文大学 问题与贡献 MIM(Model Maksed Model)方法可以分为两部分…

WSL 配置 Linux

WSL 配置 Linux Windows 启动 Linux 子系统 控制面板 -> 程序和功能&#xff0c; 将 适用于 Linux 的 Windows 子系统 勾选。 安装 Terminal 在 Microsoft Store 市场上搜索 Terminal 安装 Windows Terminal。 安装 编译工具链 sudo apt update # 更新软件包 sudo apt i…

MyBatis自定义映射resultMap,处理一对多,多对一

1、自定义映射resultMap 复习&#xff1a;查询的标签select必须设置属性resultType或resultMap&#xff0c;用于设置实体类和数据库表的映射 关系 resultType&#xff1a;自动映射&#xff0c;用于属性名和表中字段名一致的情况 &#xff08;或设置了下划线映射为驼峰&#x…

qemu基础篇——VSCode 配置 GDB 调试

文章目录 VSCode 配置 GDB 调试安装 VSCode 插件调试文件创建调试配置配置脚本qemu 启动脚 启动调试报错情况一报错情况二报错情况三 调试界面运行 GDB 命令查看反汇编断点查看内核寄存器查看变量参考链接 VSCode 配置 GDB 调试 上一节中直接使用 GDB 命令行调试&#xff0c;本…

基于海洋捕食者优化的BP神经网络(分类应用) - 附代码

基于海洋捕食者优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于海洋捕食者优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.海洋捕食者优化BP神经网络3.1 BP神经网络参数设置3.2 海洋捕食者算法应用 4…

JVM字节码指令详解

文章目录 前言一、JVM字节码指令概述1. 什么是JVM字节码指令&#xff1a;2. 字节码指令的作用&#xff1a;3. 字节码指令的分类&#xff1a; 二、字节码指令的种类1. 加载和存储指令2. 算术指令3. 类型转换指令4. 对象和数组操作指令5. 操作数栈管理指令6. 控制转移指令7. 方法…

在emacs中,设置latex的主文档

文档&#xff1a; chapter1.tex chapter2.tex main.tex 在chapter1.tex中&#xff0c;先按下 ctrlc ctrln&#xff0c;再按下ctrlc ctrla&#xff0c;在下方的提示框中输入主文档。

链路层3:VLAN的配置与分析

VLAN的帧格式 VLAN数据帧的传输 在以太网中&#xff0c;加了标签tag的VLAN数据帧我们叫做V-MAC帧&#xff0c;普通的数据帧我们叫做MAC帧。对于主机来说&#xff0c;它只认识普通的MAC帧&#xff1b;对于主机&#xff0c;V-MAC帧和MAC帧它都认。所以&#xff0c;实际上的V-MAC…

docker中使用GPU+rocksdb

配置环境 delldell-Precision-3630-Tower  ~  lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focaldelldell-Precision-3630-Tower  ~  nvcc --version nvcc: NVIDIA (R) Cuda comp…

如果C盘满了怎么办

相信这个问题是困扰了很多人的。 1、清理 1.1清理缓存 这种适合一些小白&#xff0c;清理C盘中的缓存&#xff0c;但是治标不治本。上正文 &#xff08;1&#xff09;打开电脑&#xff0c;输入winr &#xff08;2&#xff09;输入%temp% 该文件目录下全是缓存文件可以删除&…

2023年京东双11红包领取入口口令活动时间是从什么时候开始到几月几号结束如何领取2023京东双十一红包优惠券?

2023年京东双11红包领取活动时间是什么时候&#xff1f; 京东双11红包领取活动时间将于2023年10月23日00:00开始至11月11日23:59结束&#xff1b; 2023年京东双11红包领取入口在哪里如何天天免费领取&#xff1f; 2023年京东双11红包口令「红包到手677」&#xff0c;请在活动…

完美解决lftp遇到put: Access failed: 553 Could not create file.

目录 一、问题 二、原因 三、解决方法 一、问题 put: Access failed: 553 Could not create file. 二、原因 &#xff08;1&#xff09;没有关闭SeLinux &#xff08;2&#xff09;linux默认安装vsftp服务之后只允许匿名用户的访问和下载&#xff0c;不支持上传。 三、解决方…

【Java】nextInt()后面紧接nextLine()读取不到数据/InputMismatchException异常的解决方案

错误如下&#xff1a; 有时候还会抛出InputMismatchException异常 看&#xff01;我只输入了一个5&#xff0c;并没有给str赋值&#xff0c;它就已经将结果打印出来了&#xff01;这就意味着&#xff0c;str是读取到了数据的&#xff0c;只不过这个数据并不是我们想要的输入的…

unity ugui text 超链接和下划线,支持部分富文本格式

unity版本&#xff1a;2021.3.6f1 局限性&#xff1a; 1.测试发现不能使用 size 富文本标签, 2.同一文本不能设置不同颜色的超链接文本 其它&#xff1a;代码中注释掉使用innerTextColor的地方&#xff0c;可以使用富文本设置超链接颜色&#xff0c; 但是下划线是文本本身颜色 …

Mybatis学习笔记注解/xml映射/动态SQL%%%Mybatis教程

介绍 Mybatis 是一款优秀的持久层框架&#xff0c;用于简化 JDBC 的开发 MyBatis中文网 Mybatis 入门 快速入门 步骤 创建 SpringBoot 工程、数据库表 user、实体类 User引入 Mybatis 相关依赖&#xff0c;配置 Mybatis&#xff08;数据库连接信息&#xff09;编写 SQL 语…

adb调试Linux嵌入式设备记录

1. ADB的全称为Android Debug Bridge&#xff0c;调试设备或调试开发的Android APP。 2.adb的windows下载安装路径&#xff1a;SDK 平台工具版本说明 | Android 开发者 | Android Developers 3.linux中安装adb,参考该链接&#xff1a; https://www.cnblogs.com/androidsu…

Springboot+vue的财务管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的财务管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的财务管理系统&#xff0c;采用M&#xff08;model…

基于Seata的分布式事务方案

在Seata中&#xff0c;有4种分布式事务实现方案 XA、AT、TCC、Saga 其中XA利用了数据库的分布式事务特性&#xff0c;AT相当于框架去控制事务回滚。TCC手写三个方法&#xff0c;saga手写两个方法。 AT的性能和编写比较折中&#xff0c;是最常用的一种。TCC一些视频教程中介绍…