伪元素需显式声明 content: “” 才能渲染,配合 position: absolute 和 display: block 可实现不占布局空间的装饰性叠加;其零HTML冗余、仅重绘、CSS可控性强,但不可交互、无无障碍支持。
用 ::before 或 ::after 实现内容隐藏+装饰的常见写法
直接在伪元素里加 content: "",再配合 position: absolute 和尺寸控制,就能把装饰性图形(比如小图标、分隔线、背景色块)“挂”在元素上,而不影响原有文本流。关键不是“隐藏”,而是“不占布局空间地叠加”。
常见错误是忘了设 content —— 没有它,::before/::after 根本不会渲染。
-
content必须显式声明,哪怕只是content: "" - 若要定位到父元素外部(如左/右悬垂装饰),父元素需设
position: relative - 伪元素默认是 inline,设
display: block或inline-block才能控制宽高
为什么用伪元素比额外加 更轻量
伪元素不参与 DOM 结构,JS 无法通过 querySelector 直接选中,也不触发重排(reflow),只影响重绘(repaint)。适合纯视觉装饰,比如标题下的细线、按钮右箭头、标签角标。
但注意:伪元素不能响应事件(click、hover 等需作用于宿主元素),也不能被屏幕阅读器读取(无障碍场景慎用)。
立即学习“前端免费学习笔记(深入)”;