文章目录
- 什么是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
- ……
- :hover:表示鼠标移动到某个元素上会发生什么。
- 常见的伪元素
- ::before:在某个类或伪类之前添加内容
- ::after (:after) - CSS:层叠样式表 | MDN
- ::after:在某个类或伪类之后添加内容
- ::before (:before) - CSS:层叠样式表 | MDN
- ::marker:在某个类或伪类之前添加标志
- ::marker - CSS:层叠样式表 | MDN
- ::placeholder:如表示input输入框提示文本的样式
- ::placeholder - CSS:层叠样式表 | MDN
- ……
- ::before:在某个类或伪类之前添加内容
这里不对伪类做太多的讨论,重点看一下伪元素是怎么用的。
什么是CSS伪类?什么是伪元素?
伪类 - CSS:层叠样式表 | MDN
伪元素 - CSS:层叠样式表 | MDN
怎么用伪元素?可以做些什么?
::before,在标签选择器之前添加内容,::after正好与之相反
<!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,在类选择器之前添加内容(:制作一个悬浮提示窗
<!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博客