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博客

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

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

相关文章

ROM和RAM概念

一、存储器特性 1&#xff09;易失性&#xff1a;掉电数据会丢失&#xff0c;通常指RAM&#xff1b; RAM分为SRAM、DRAM SRAM&#xff1a;静态RAM&#xff0c;只要上电数据就不会丢失&#xff1b; DRAM&#xff1a;动态RAM&#xff0c;需要每隔一段事件刷新数据&#xff0c;否…

宽量程双计数器测量方法

如要测量计数器信号的数字频率或周期&#xff0c;可使用双计数器方法测量宽量程信号。该方法适于待测量信号的范围较广且整个范围都需要较高测量精度的情况。关于使用宽量程测量方法提高测量精度的详细信息&#xff0c;见量化误差章节。也可使用该方法测量比计数器时基频率更高…

linux磁盘已满,查看哪个文件占用多

使用df -h查看磁盘空间占用情况 使用sudo du -s -h /* | sort -nr命令查看那个目录占用空间大 然后那个目录占用多 再通过sudo du -s -h /var/* | sort -nr 一层层排查&#xff0c;找到占用文件多的地方 如果通过以上方法没有找到问题所在&#xff0c;那么可以使用 lsof |…

UI自动化测试工具工作原理是怎样的?

随着软件开发的不断演进&#xff0c;保障软件质量成为了至关重要的一环。在这个过程中&#xff0c;UI自动化测试工具崭露头角&#xff0c;为开发团队提供了一种强有力的方式来确保应用程序的稳定性、功能性和兼容性。本文将深入探讨UI自动化测试工具的定义、工作原理以及其在提…

mybatis数据输入-零散的简单类型数据

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom",200.33); INSERT INTO…

版本控制系统Git学习笔记-Git基本知识介绍

目录 前言一、版本控制系统1.1 什么是版本控制系统1.2 本地版本控制系统1.3 集中化的版本控制系统1.3 分布式版本控制系统 二、Git简介2.1 数据处理方式2.2 几个特点2.2.1 几乎所有操作都是本地执行2.2.2 Git保证完整性2.2.3 Git一般只添加数据 2.3 Git中文件状态2.3.1 三种文件…

拼图游戏制作

2.创建用户界面 package domain; /** * ClassName: User * Author: Kox * Data: 2023/2/2 * Sketch: */ public class User { private String username; private String password; public User() { } public User(String username, String p…

防火墙之iptables

iptables概述 1.Linux 系统的防火墙 &#xff1a;IP信息包过滤系统&#xff0c;它实际上由两个组件netfilter 和 iptables组成。 2.主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 -netfilter/iptables关系&#xff1a; netfil…

JS获取字符串里最长的回文字符串

方法一 使用双指针配合枚举 /*** param {string} s* return {string}*/ const longestPalindrome s > {const LEN s.lengthif (LEN < 2) {return s}let maxStr /*** param left * param right * returns */const findPalindrome (left, right) > {while (left &…

day32_Git

今日内容 零、 复习昨日 零、 复习昨日 一、引言 在单人开发过程中&#xff0c;需要进行版本管理&#xff0c;以利于开发进度的控制。 在多人开发过程中&#xff0c;不仅需要版本管理&#xff0c;还需要进行多人协同控制。 版本控制(VS) SVN GIT 二、介绍 Git是一个开源的…

rabbitmq-server-3.11.10.exe

rabbitmq需要erlang环境 otp_win64_25.1.exe erlang-CSDN博客 https://www.rabbitmq.com/download.htmlhttps://www.rabbitmq.com/install-windows.htmlhttps://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.10/rabbitmq-server-3.11.10.exe C:\Users\Admi…

Spine深入学习 —— 换装

Spine深入学习————换装 数据对象和实例对象的关系与区别 数据对象是无状态的&#xff0c;可在任意数量的骨架实例间共用。有对应实例数据的数据对象类名称以“Data”结尾&#xff0c;没有对应实例数据的数据对象则没有后缀&#xff0c;如附件、皮肤及动画。 实例对象有许…

【数据结构】——排序

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

bugku题解记录2

文章目录 哥哥的秘密黄道十二官where is flag一段新闻 哥哥的秘密 给出了一个qq&#xff0c;那就去看看呗 hint里面说 收集空间信息——相册——收集微博信息——相册——解题——相册——提交flag 那看看空间先 盲文&#xff1a; hint&#xff1a;密码时地人 旗帜存在相册里…

【精选】ATKCK红队评估实战靶场一 超详细过程思路

一、环境搭建 1.红日靶场下载&#xff1a; 靶场下载地址&#xff1a; https://pan.baidu.com/s/1nC6V8e_EuKfaLb2IuEbe7w&shflsharepset 提取码&#xff1a;n1u22.内外网IP搭建 Windows 7 x64Windows Server 2008Win2K3 Metasploitablekali内网IP&#xff1a;192.168.52…

【LeetCode:1657. 确定两个字符串是否接近 | 计数 + 阅读理解】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Ubuntu使用Nginx部署前端项目——记录

安装nginx 依次执行以下两条命令进行安装&#xff1a; sudo apt-get update sudo apt-get install nginx通过查看版本号查看是否安装成功&#xff1a; nginx -v补充卸载操作&#xff1a; sudo apt-get remove nginx nginx-common sudo apt-get purge nginx nginx-common su…

[ffmpeg] aac 音频编码

aac 介绍 aac 简单说就是音频的一种压缩编码器&#xff0c;相同音质下压缩比 mp3好&#xff0c;目前比较常用。 aac 编码支持的格式 aac 支持的 sample_fmts: 8 aac 支持的 samplerates: 96000 88200 64000 48000 44100 32000 24000 22050 16000 12000 11025 8000 7350 通…

Pycharm中使用matplotlib绘制动态图形

Pycharm中使用matplotlib绘制动态图形 最终效果 最近用pycharm学习D2L时发现官方在jupyter notebook交互式环境中能动态绘制图形&#xff0c;但是在pycharm脚本环境中只会在最终 plt.show() 后输出一张静态图像。于是有了下面这段自己折腾了一下午的代码&#xff0c;用来在pych…

unity学习笔记12

一、物理系统 如何让一个球体受到重力的影响&#xff1f; 只要给物体添加刚体组件&#xff08;Rigidbody&#xff09;&#xff0c;就可以使其受到重力影响 1.刚体&#xff08;Rigidbody&#xff09;&#xff1a; 刚体是一个组件&#xff0c;用于使游戏对象受到物理引擎的控制。…