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

news2024/12/24 21:55:38

文章目录

    • 什么是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博客

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

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

相关文章

认识JVM 一个Java文件的JVM之旅

准备 我是一个java文件&#xff0c;如何实现我的功能呢&#xff1f;需要去JVM(Java Virtual Machine)这个地方旅行。 变身 我高高兴兴的来到JVM&#xff0c;想要开始JVM之旅&#xff0c;它确说&#xff1a;“现在的我还不能进去&#xff0c;需要做一次转换&#xff0c;生成c…

Ubuntu镜像与K8S冲突,容器持续Terminating

问题 记录一次软件冲突BUG&#xff1a; eclipse-temurin:11-jdk&#xff08;底层Ubuntu 20.04.3 LTS&#xff09;镜像创建的容器在K8S-1.25.5上无法正常terminating&#xff0c;造成资源浪费&#xff0c;甚至引发K8S资源CPU insufficient报错。具体表现 某些容器镜像在K8S上无…

20个Python源码项目下载

20个很不错的Python项目源码&#xff0c;其中包括适合毕业设计的项目。这些资源中涵盖了Django 3版本的项目&#xff1a; DjangoMysqlBulma实现的商场管理系统源码 PythonDjango实现基于人脸识别的门禁管理系统 PythonFlaskMySQL实现的学生培养计划管理系统 Python大熊猫主题人…

Windows本地搭建Emby媒体库服务器并实现远程访问「内网穿透」

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

Linux基本指令(中篇)

目录 8.cp指令&#xff08;重要&#xff09; 9.mv指令&#xff08;重要&#xff09;&#xff1a; 10.cat指令&#xff08;适合查看小文件内容&#xff09; 11.more指令&#xff08;适合查看大文件内容&#xff09; 12.less指令&#xff08;重要&#xff09; 13.head指令和…

SpringBoot 整合 Neo4j 实战(头歌)

文章目录 第1关&#xff1a;认识 Spring DATA Neo4J任务描述相关知识Spring DATA Neo4J - 简介Spring JDBC / Spring ORM 模块的缺点&#xff1a;Spring 数据模块的优点&#xff1a;Spring 数据模块功能&#xff1a;Spring DATA Neo4j 模块的附加功能&#xff1a; Spring DATA …

【腾讯云云上实验室】个人对腾讯云向量数据库的体验心得

目录 前言Tencent Cloud VectorDB概念使用初体验腾讯云向量数据库的优势应用场景有哪些&#xff1f;未来展望番外篇&#xff1a;腾讯云向量数据库的设计核心结语 前言 还是那句话&#xff0c;不用多说想必大家都能猜到&#xff0c;现在技术圈最火的是什么&#xff1f;非人工智…

HyperBDR云容灾v4.10.1发布,划重点:支持UCloud云平台自动化容灾+新增可灵活定义的备份策略

版本更新 HyperBDR云容灾v4.10.1版本来啦&#xff01; 此次更新为大家带来了多个新功能&#xff0c;下面让我们来看看具体是哪些吧~ 01 策略管理新功能&#xff1a; 多时间段限速功能&#xff1a; 更加灵活的多个时间段限速选择&#xff0c;可以在创建策略时为不同的时间段设…

JavaEE——简单认识CSS

文章目录 一、简单了解什么是 CSS二、CSS 选择器1.标签选择器2.类选择器3.ID 选择器4.后代选择器5.子选择器6.伪类选择器 三、字体属性1.设置字体家族2.设置字体大小3.设置字体粗细4.文字倾斜 四、文本属性1.文本对齐2.文本装饰3.文本缩进4.背景设置 五、圆角矩形六、CSS 盒子模…

【猜数字游戏】用wxPython实现:基本的游戏框架 + 简单的图形用户界面

【猜数字游戏】 写在最前面猜数字游戏 实现【猜数字游戏】安装wxPython全部代码代码解析1. 初始化界面2. 生成随机数3. 处理猜测4. 特殊功能5. 分数计算 游戏小程序呈现结语 写在最前面 看到了一个比较有意思的问题 https://ask.csdn.net/questions/8038039 猜数字游戏 在这…

人工智能_机器学习056_拉格朗日乘子法原理推导_公式由来详解_原理详解---人工智能工作笔记0096

https://blog.csdn.net/Soft_Po/article/details/118332454 这里有老师的一篇文章介绍拉格朗日乘子法的原理推导 结合老师的这篇文章我们来看一下详细的推导过程 可以看到上一节我们说,一个有条件的,函数,可以转换为一个,无条件的函数, 根据拉格朗日乘子法,可以创建出一个等…

3.C转python

1.int()默认是按照十进制来转换的 2.在python中没有字符 3.可以这样写 4.特例 这样写才对(要空语句即pass空语句来占位) 5.python中没有swicth语句 6.while循环例子 7.死循环有时不是Bug 8.for循环例子 其中的range()函数中的第三个常数是步长 例子 再一个例子 9.使用shif…

【Node.js】笔记整理4 - 版本管理工具nvm

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

无限移动的风景 css3 动画

<style>*{margin:0;padding:0;/* box-sizing: border-box; */}ul{list-style: none;}#nav{width:900px;height:100px;border:2px solid rgb(70, 69, 69);margin:100px auto; overflow: hidden;}#nav ul{animation:moving 5s linear infinite;width:200%; /*怎么模拟动画…

python爬虫基础知识

使用python进行网络爬虫开发之前&#xff0c;我们要对什么是浏览器、什么HTML&#xff0c;HTML构成。请求URL的方法都有一个大概了解才能更清晰的了解如何进行数据爬取。 什么是浏览器&#xff1f; 网页浏览器&#xff0c;简称为浏览器,是一种用于检索并展示万维网信息资源的…

二进制求和

这篇文章会收录到 : 算法通关村第十三关-白银挑战数字与数学高频问题-CSDN博客 二进制求和 描述 : 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 题目 : LeetCode 67.二进制求和 : 67. 二进制求和 分析 : 这个题也是用字符串来表示数据的…

qt 5.15.2压缩和解压缩功能

qt 5.15.2压缩和解压缩功能 主要是添加qt项目文件.pro内容&#xff1a; 这里要先下载quazip的c项目先编译后引入到本项目中/zip目录下 INCLUDEPATH ./zip CONFIG(debug, debug|release) {win32:win32-g: PRE_TARGETDEPS $$PWD/zip/libquazipd.awin32:win32-g: LIBS -L$$PWD…

nginx部署多个vue或react项目

下载nginx(tar.gz) nginx: download(官方地址) 部署nginx # 进入nginx压缩包所在目录 cd /usr/nginx# 解压 tar -zxvf nginx-1.25.3.tar.gz# 安装nginx的相关依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 生成Makefile可编译文件 cd /usr/ng…

SSM校园组团平台系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 校园组团平台系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

11-30 JavaWeb

修改与删除操作 防止空指针异常 localhost:8080 -> 分页查询 修改流程&#xff1a;(先查后改(两个servlet)) 修改&#xff1a; 传用户id(用户id怎么得到 -> 循环一次得到一个user 对象 user对象里用user.getId()得到用户id) UpdateUserQueryServlet.java &#xff08;…