::before
和 ::after
是 CSS 伪元素,用于在元素的内容之前或之后插入内容。它们通过 content
属性定义要插入的内容。
/* 在元素内容之前插入内容 */
.element::before {
content: "Before";
}
/* 在元素内容之后插入内容 */
.element::after {
content: "After";
}
默认情况下,::before
伪元素会在元素内容之前显示,而 ::after
伪元素会在元素内容之后显示。要更改它们的顺序,可以使用 CSS 的 counter-increment
和 counter-reset
属性结合使用。
假设我们有一个按钮,点击按钮后更改 ::before
和 ::after
的顺序:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Change ::before and ::after Order</title>
<style>
.element {
position: relative;
padding: 10px;
border: 1px solid #000;
}
.element::before {
content: "Before";
position: absolute;
top: 0;
left: 0;
}
.element::after {
content: "After";
position: absolute;
bottom: 0;
right: 0;
}
.reversed::before {
content: "After";
}
.reversed::after {
content: "Before";
}
</style>
</head>
<body>
<div class="element">Element</div>
<button onclick="toggleOrder()">Toggle Order</button>
<script>
function toggleOrder() {
const element = document.querySelector('.element');
element.classList.toggle('reversed');
}
</script>
</body>
</html>
div
元素和一个按钮。.element::before
和 .element::after
定义了默认的伪元素内容。.reversed::before
和 .reversed::after
定义了切换顺序后的伪元素内容。element
的 reversed
类,从而更改 ::before
和 ::after
的内容。这种技术可以用于创建动态效果,例如在用户交互时改变元素的视觉表现。它也可以用于实现复杂的布局和动画效果。
通过这种方式,你可以灵活地控制 ::before
和 ::after
伪元素的显示顺序,从而实现更多样化的设计效果。
领取专属 10元无门槛券
手把手带您无忧上云