CSS伪类伪元素?:hover,::before,::after使用(举例)

文章目录

    • 什么是CSS伪类?什么是伪元素?
    • 怎么用伪元素?可以做些什么?
      • ::before,在标签选择器之前添加内容,::after正好与之相反
      • ::before,在类选择器之前添加内容(:制作一个悬浮提示窗
    • 参考链接

        作为一名假前端,css在我眼里是一个非常神奇的东西。我只会想页面上的内容需要以什么方式展示,但是不知道怎么用css去实现,或者说不知道css里面有哪些技术可以实现。最近发现css中伪类的一个用法,特意查询了一下,感觉很有趣,记录一下。
        请允许我先暂且叫它们 css伪类, 后来我通过查阅相关的资料发现 css伪类css伪元素是两种不同的东西。
        在css3中,按照规范使用 单冒号(:) 表示伪类,使用 双冒号(::) 表示伪元素:

  • 常见的伪类
    • :hover:表示鼠标移动到某个元素上会发生什么。
      • :hover - CSS:层叠样式表 | MDN
    • :visited:表示鼠标激活某个链接后会发生什么。通常用在a标签area标签
      • :visited - CSS:层叠样式表 | MDN
    • :checked:表示鼠标选中某些元素后会发生什么。如单选、复选、下拉等
      • :checked - CSS:层叠样式表 | MDN
    • ……
  • 常见的伪元素
    • ::before:在某个类或伪类之前添加内容
      • ::after (:after) - CSS:层叠样式表 | MDN
    • ::after:在某个类或伪类之后添加内容
      • ::before (:before) - CSS:层叠样式表 | MDN
    • ::marker:在某个类或伪类之前添加标志
      • ::marker - CSS:层叠样式表 | MDN
    • ::placeholder:如表示input输入框提示文本的样式
      • ::placeholder - CSS:层叠样式表 | MDN
    • ……

这里不对伪类做太多的讨论,重点看一下伪元素是怎么用的。

什么是CSS伪类?什么是伪元素?

伪类 - CSS:层叠样式表 | MDN
伪元素 - CSS:层叠样式表 | MDN

怎么用伪元素?可以做些什么?

::before,在标签选择器之前添加内容,::after正好与之相反

GIF 2023-11-30 10-57-24.gif

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>伪元素测试</title>
	<link rel="stylesheet" href="">

	<style type="text/css">
		/*	给所有span元素添加,手型	*/
		span {
			cursor: pointer;
		}
		/*	给所有span元素添加,鼠标悬浮上去之后,在当前span元素前面添加竖线	*/
		span:hover::before {
			content: "";
			font-size: 20px;
			border-right: solid darkred;
		}
	</style>
</head>
<body style="text-align: center;">
	<span class="menu">目录1</span><br>
	<span class="menu">目录2</span><br>
	<span class="menu">目录3</span><br>
	<span class="menu">目录4</span><br>
</body>
</html>

::before,在类选择器之前添加内容(:制作一个悬浮提示窗

GIF 2023-11-30 11-38-09.gif

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>伪元素测试</title>
	<link rel="stylesheet" href="">

	<style type="text/css">

		.menu {
			cursor: pointer;
			display: block;
			line-height: 15px;
    	margin: 20px;
		}

		.menu:hover::before {
			content: "";
			font-size: 20px;
			border-right: solid darkred;
		}
    /* 定义提示窗口的样式 */
		.tips {
			  display: none;
/*			display: inline-block;*/
		    position: absolute;
		    min-width: 155px;
		    max-height: 55px;
		    width: max-content;
		    background: rgba(0, 0, 0, 0.8);
		    padding: 10px 12px;
		    border-radius: 4px;
		    color: #fff;
		    left: 30px;
		    top: -10px;
		}
    /* 定义问号样式 */
		.tips-question {
			  position: absolute;
		    display: inline-block;
		    background-color: #080808;
		    width: 15px;
		    height: 15px;
		    line-height: 15px;
		    text-align: center;
		    border-radius: 10px;
		    cursor: pointer;
		    user-select: none;
		    color: white;
		    font-size: 11px;
		    font-weight: bold;
		    width: -moz-max-content;
		}
    /* 问号,鼠标悬浮上之后展开提示窗口 */
		.tips-question:hover .tips {
			display: inline-block;
		}

    /* 展开提示窗口之后,在窗口左边加一个小三角形 */
		.tips-question .tips::before {
		    content: '';
		    border: solid 12px #00000000;
		    border-right-color: rgba(0, 0, 0, 0.8);
		    position: absolute;
		    top: 7px;
		    left: -20px;
		}
	</style>
</head>
<body style="text-align: center;">
	<ul>
		<li class="menu">目录1
			<div class="tips-question">
				<p style="display: inline;">?</p>
				<div class="tips">悬浮展示1</div>
		  </div>
		</li>
		<li class="menu">目录2
			<div class="tips-question">
				<p style="display: inline;">?</p>
				<div class="tips">悬浮展示2</div>
		  </div>
		</li>
		<li class="menu">目录3
			<div class="tips-question">
				<p style="display: inline;">?</p>
				<div class="tips">悬浮展示3</div>
		  </div>
		</li>
		<li class="menu">目录4
			<div class="tips-question">
				<p style="display: inline;">?</p>
				<div class="tips">悬浮展示4</div>
		  </div>
		</li>
	</ul>
</body>
</html>

参考链接

css中::before ::after的用法_css中before和after的用法-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAN总线

1、CAN总线简介 CAN总线协议&#xff08;Controller Area Network&#xff09;&#xff0c;控制器局域网总线&#xff0c;是德国BOSCH&#xff08;博世&#xff09;公司研发的一种串行通讯协议总线&#xff0c;它可以使用双绞线来传输信号&#xff0c;是世界上应用最广泛的现场…

Locust单机多核压测,以及主从节点的数据通信处理!

一、背景 这还是2个月前做的一次接口性能测试&#xff0c;关于locust脚本的单机多核运行&#xff0c;以及主从节点之间的数据通信。 先简单交代下背景&#xff0c;在APP上线之前&#xff0c;需要对登录接口进行性能测试。经过评估&#xff0c;我还是优先选择了locust来进行脚…

实现校园网开机自启动部署

❤️博客主页&#xff1a; iknow181&#x1f525;系列专栏&#xff1a; Python、JavaSE、JavaWeb、CCNP&#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 目录 一.准备工作 1、IDE安装 2、安装Selenium 1.介绍 2.下载 3、安装pywifi 1.介绍 2.下载 4、下载浏览器驱…

python 制作3d立体隐藏图

生成文件的3d图&#xff0c;例子&#xff1a; 文字&#xff1a; 隐藏图&#xff1a; 使用建议&#xff1a; &#xff11;、建议不用中文&#xff0c;因为中文太复杂&#xff0c;生成立体图效果不好。 &#xff12;、需要指定FONT_PATH&#xff0c;为一个ttf文件&#xff0c;…

NoSQL 数据建模错误会降低性能

数据建模错误是破坏性能的最简单方法之一。当您使用 NoSQL 时&#xff0c;特别容易搞砸&#xff0c;&#xff08;讽刺的是&#xff09;NoSQL 往往用于对性能最敏感的工作负载。NoSQL 数据建模最初可能看起来非常简单&#xff1a;只需对数据进行建模以适应应用程序的访问模式。但…

BatchOutput PDF for Mac(PDF 批量处理软件)

BatchOutput PDF是一款适用于 Mac 的 PDF 批量处理软件。它可以帮助用户将多个 PDF 文件进行异步处理&#xff0c;提高工作效率。 BatchOutput PDF 可以自动化执行许多任务&#xff0c;包括 PDF 文件的打印、转换、分割、压缩、加密、重命名等&#xff0c;而且它还可以将自定义…

基于python 医院预约挂号系统-计算机毕业设计源码24802

摘 要 随着互联网时代的到来&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个基于django 医院预约挂号系统 &#xff0c;会使&#xff1b;医院预约挂号系统的管理工作系统化、规范化&#xff0c;也会提高平台形象&a…

汽美汽修店服务预约会员管理系统小程序效果如何

很多家庭中都有一辆或多辆汽车&#xff0c;无论燃油车还是新能源电车等&#xff0c;其市场中的数量及人均拥有量都很大&#xff0c;除了汽车销售业外&#xff0c;汽车美容修理店则生意也很多&#xff0c;可以看到城市中的不少街道中都有大大小小的汽车服务门店。 而在市场中&a…

关于制造业数字化转型,大咖们有这些建议……

随着数字经济与实体经济深度融合&#xff0c;越来越多传统制造业企业走上数字化转型之路&#xff0c;实现生产、研发、管理、组织、商业模式等多层面的创新。为发挥鼎捷41年在制造业数字化转型的行业积淀&#xff0c;赋能更多制造业企业突破发展瓶颈&#xff0c;鼎捷携手来自工…

VC++调试QT源码

环境&#xff1a;vs2017 qt 5.14.2 1&#xff1a;首先我们需要选择我们的源码路径 右键解决方案-》属性-》通用属性-》调试源文件-》在窗口内添加QT下载时的源码**.src文件夹**&#xff0c;这里最好把源码 D:\software\QT\path\5.14.2\Src 源文件里面的Src文件做一个备份出来…

028 - STM32学习笔记 - ADC(二) 独立模式单通道中断采集

028 - STM32学习笔记 - 结构体学习&#xff08;二&#xff09; 上节对ADC基础知识进行了学习&#xff0c;这节在了解一下ADC相关的结构体。 一、ADC初始化结构体 在标准库函数中基本上对于外设都有一个初始化结构体xx_InitTypeDef&#xff08;其中xx为外设名&#xff0c;例如…

重生奇迹mu武器镶嵌顺序

一、武器的镶嵌顺序&#xff1a; 雷冰火30%概率出现技能11 从上到下的镶嵌顺寻按照雷、冰、火镶嵌&#xff0c;就有30%的概率出现技能攻击力加11的幸运荧光属性。 从上到下的镶嵌顺寻按照火、冰、雷镶嵌&#xff0c;就有30%的概率出现攻击力加11的幸运荧光属性。 例如&…

设计模式 【Adapter 模式】

Adapter 模式 1.什么是 Adapter 模式 用来填补现有的程序和所需的程序之间差异的设计模式就是 Adapter 模式。 Adapter 模式有两种&#xff1a; ● 类适配器模式&#xff0c;即使用继承的适配器 ● 对象适配器模式&#xff0c;即使用委托的适配器 2.使用继承的适配器示例…

Java Swing管理系统万能模板 课程设计素材

JavaSwing管理系统万能模板 视频教程&#xff1a; 【课程设计】2小时学会JavaSwing课程设计-万能模板-图书管理系统-[你的课程我设计] 万能模板是用Java Swing开发的&#xff0c;包含管理系统常用的多角色登录、数据查询、添加、修改、删除。常用的管理系统都可以使用万能模板…

轻松搭建Nextcloud私有云盘并实现公网访问本地资源

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

埃拉托色尼筛法

def is_prime(n):if n % 2 0 and n ! 2:return Falsefor i in range(3, int(math.sqrt(n) 1)):if n % i 0:return Falsereturn n ! 1def eratosthenes(n):primes []is_prime [True] * (n 1)for i in range(2, n1):if is_prime[i]:primes.append(i)# 用当前素数i去筛掉所有…

AT24C02数据读取异常问题(0xFF)

文章目录 问题描述解决方法总结 2023/11/29 问题描述 使用AT24C02模块&#xff0c;写入数据后立刻读取&#xff0c;读取到的数据出现异常&#xff0c;异常值为0xFF。 例如我们在主函数里&#xff0c;首先调用AT_Write函数往模块的0地址写入一个数据&#xff0c;接着多次调用AT…

【开源】基于Vue+SpringBoot的创意工坊双创管理系统

项目编号&#xff1a; S 049 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S049&#xff0c;文末获取源码。} 项目编号&#xff1a;S049&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、…

Python教程:装饰器的10个示例用法

Python装饰器是一种高级语法&#xff0c;它允许我们增强函数或方法的功能&#xff0c;而无需修改其原始代码。装饰器本质上是一个函数&#xff0c;它接收一个函数作为参数&#xff0c;并返回一个新的函数。这个新的函数可以包装原有函数&#xff0c;添加一些新的功能。 在Pyth…

重载、重写、重定义的辨析

C重载、重写、重定义 重载、重写、重定义对比一、重载&#xff08;overload&#xff09;二、重写 / 覆盖&#xff08;override&#xff09;三、重定义 / 隐藏&#xff08;redefining&#xff09; * 为什么在虚函数中不能使用 static 关键字&#xff1f;动态绑定&#xff08;Dyn…