js面试题---js伪类和伪元素的区别

server/2024/12/22 2:06:15/

一 伪类(Pseudo-classes)

1 定义

伪类是用于选择处于特定状态或条件下的 HTML 元素。它们通常以单冒号 (😃 开头,后面跟着伪类名称。这些状态可能与用户的交互、元素在文档中的结构位置等相关。

2 常见伪类

  1. :hover

当鼠标悬停在元素上时应用的样式。

javascript">a:hover {color: red;
}
  1. :active

当元素被点击时应用的样式。

javascript">button:active {background-color: green;
}
  1. :focus

当元素获得焦点时应用的样式(例如,输入框)。

javascript">input:focus {border: 2px solid blue;
}
  1. :nth-child(n)

选择父元素中第 n 个子元素,可以使用公式(如 2n 表示偶数,2n+1 表示奇数)。

javascript">li:nth-child(2n) {background-color: lightgray;
}
  1. :first-child

选择父元素的第一个子元素。

javascript">p:first-child {font-weight: bold;
}
  1. :last-child

选择父元素的最后一个子元素。

javascript">p:last-child {color: blue;
}
  1. :not(selector)

选择不匹配给定选择器的元素。

javascript">div:not(.special) {background-color: yellow;
}

用法示例

javascript">html<ul><li>Item 1</li><li class="special">Item 2</li><li>Item 3</li>
</ul><style>
li:hover {background-color: lightblue; /* 鼠标悬停时改变背景 */
}
li.special {font-weight: bold; /* 特殊项加粗 */
}
li:nth-child(2) {text-decoration: underline; /* 第二项下划线 */
}
</style>

二 伪元素(Pseudo-elements)

1 定义

伪元素用于选择元素的特定部分或创建虚拟元素。它们通常以双冒号 (:😃 开头,后面跟着伪元素名称。伪元素可以用来插入内容、样式化特定部分等。

2 常见伪元素

  1. ::before

在元素内容之前插入内容。

javascript">p::before {content: "Notice: ";font-weight: bold;
}
  1. ::after

在元素内容之后插入内容。

javascript">p::after {content: " Thank you!";
}
  1. ::first-line

选择块级元素的第一行文本,并可以为其应用样式。

javascript">p::first-line {font-weight: bold;
}
  1. ::first-letter

选择块级元素的第一个字母,并可以为其应用样式。

javascript">p::first-letter {font-size: 2em;color: red;
}

用法示例

javascript"><p>This is a sample paragraph.</p><style>
p::before {content: "Note: "; /* 在段落前添加内容 */font-weight: bold;
}p::after {content: " [End of paragraph]"; /* 在段落后添加内容 */
}p::first-line {color: blue; /* 第一行文字变为蓝色 */
}p::first-letter {font-size: 2em; /* 第一个字母变大 */color: orange; /* 第一个字母变为橙色 */
}
</style>

三 伪类与伪元素的区别

特性伪类伪元素
定义用于选择特定状态的元素用于选择元素的特定部分或插入内容
语法使用单冒号 (:)使用双冒号 (::)
示例:hover, :focus, :nth-child(n)::before, ::after, ::first-line, ::first-letter
应用场景根据用户交互或元素的结构状态改变样式对元素的特定部分进行样式设置或插入内容
  • 伪类帮助我们根据元素的状态(如悬停、获得焦点等)来应用样式。
  • 伪元素则允许我们对元素的特定部分进行样式处理,或者在内容前后添加额外的内容。

http://www.ppmy.cn/server/132213.html

相关文章

游戏服务端架构演进

文章目录 前言初出茅庐粗通皮毛略有小成炉火纯青内劲深厚最后 前言 对于网络游戏&#xff0c;一般分为客户端和服务端&#xff0c;客户端主要负责界面图像的渲染与一些交互操作&#xff0c;服务端主要负责数据的业务处理与存储还有与客户端之间的信息交互 比如玩家聊天、广播…

【C语言教程】【常用类库】(十三)异常处理 - <setjmp.h> 和 <assert.h>

13. 异常处理 - <setjmp.h> 和 <assert.h> 在C语言中&#xff0c;异常处理不像在一些现代高级语言中有内建的 try-catch 机制&#xff0c;但可以通过使用 <setjmp.h> 提供的setjmp和longjmp 来实现类似的异常处理机制。同时&#xff0c;<assert.h> 提…

『网络游戏』客户端发送消息到服务器【17】

将上一章服务器的协议PEProtocol的.dll文件重新生成导入unity客户端中 命名为Net 点击生成 另一种导入.dll文件方式 在客户端粘贴即可 此时Net文件夹的.dll文件就导入进来了 创建脚本&#xff1a;NetSvc.cs 编写脚本&#xff1a;NetSvc.cs 修改脚本&#xff1a;GameRoot.cs 在…

从opencv-python入门opencv--GUI功能之绘图鼠标与图像界面的交互

从opencv-python入门opencv--GUI功能之绘图和鼠标操作 一、文章介绍二、opencv绘制直线、矩形、圆形1、cv.line()2、cv.circle()3、cv.rectangle()4、在图像上绘制直线、矩形和圆形5、cv.ellipse()&#xff08;在空白画布上绘制椭圆&#xff09;&#xff08;1&#xff09;img …

用AI做期货量化交易应该怎么做

用AI做期货量化交易主要分为几个步骤&#xff0c;包括数据收集、数据处理、特征工程、模型选择与训练、策略回测以及实盘交易。以下是一个更详细的过程说明&#xff1a; 1. 数据收集 量化交易首先需要大量的市场数据&#xff0c;这些数据包括&#xff1a; 历史期货价格数据&…

Linux nohup 命令详解

文章目录 Linux nohup 命令详解基本语法nohup 工作原理实用示例示例 1&#xff1a;运行一个脚本并保持后台执行示例 2&#xff1a;指定输出文件示例 3&#xff1a;结合 sleep 命令 使用 jobs 和 bg 管理后台进程使用 ps 和 kill 管理进程常见的 nohup 参数结合 nohup 和 cron注…

反走样算法(MSAA、TAA、FXAA、DLSS)

光栅化的采样过程会导致图形走样,走样有很多种形式: 锯齿 摩尔纹 走样的本质原因是采样速度跟不上信号变化的速度 采样频率低,使得我们将连续变化的信号离散化. 反走样方法 anti-alisaing MSAA 多重采样反走样 超采样 优点&#xff1a; 对几何反走样效果良好 缺点…

p20 docker自己commit一个镜像 p21 容器数据卷 p22mysql同步数据(国内镜像被封锁暂时往后放)p23具名挂载和匿名挂载

如何自己commit一个镜像 这里还是先引用一下老师的笔记 关于如何自己commit一个镜像这个问题目前因为从仓库中拉下来的Tomcat里面是没有项目的&#xff0c;所以把webapps.dist里面的拷贝到webapps里面去作为自己的镜像在commit一下 这里用Tomcat举例子首先把镜像拉取下来执…