::before伪元素通过content属性在元素内容前插入装饰性内容,常用于添加图标、符号或视觉效果。例如用.content: "• "添加圆点,或结合Font Awesome插入图标,还可创建左侧色条等布局装饰。使用时需注意仅用于非语义增强,避免影响可访问性,关键信息不应依赖伪元素呈现。
使用 css 的 ::before 伪元素,可以在选定元素的内容之前插入装饰性内容,而无需修改 html 结构。这种方法常用于添加图标、引号、小标记等视觉增强效果。
基本语法与content属性
::before 必须配合 content 属性使用,否则不会生效。content 可以是字符串、引用属性值,或为空。
例如,给标题前加一个装饰性圆点:
.title::before { content: "• "; color: #ff6b6b; font-weight: bold; }
插入图标或特殊符号
通过 Unicode 字符或字体图标,可以用 ::before 添加图形化装饰。
比如在链接前添加箭头符号:
a::before { content: "→ "; color: #007acc; }
或使用 Font Awesome 图标时(需引入字体),可用其对应的编码:
.icon-link::before { content: "f0c1"; font-family: "Font Awesome 5 Free"; display: inline-block; margin-right: 6px; }
创建纯视觉装饰效果
除了文字和图标,::before 还可用于生成背景形状、边框延伸等非语义装饰。
立即学习“前端免费学习笔记(深入)”;
例如为段落添加左侧色条:
.highlight::before { content: ""; display: block; width: 4px; height: 100%; background-color: #ffd700; position: absolute; left: 0; top: 0; }
注意:这类装饰应设置为空 content 或仅作视觉用途,避免影响可访问性。
注意事项与最佳实践
使用 ::before 添加装饰时,应确保不影响内容可读性和屏幕阅读器体验。
- 仅用于装饰的内容,content 应为空字符串或使用 aria-hidden 隐藏语义
- 避免在 ::before 中插入关键信息,因为无法被所有设备读取
- 若需多层装饰,可结合 ::after 一起使用
- 支持伪元素的css属性有限,如不能绑定事件,也不在 dom 中存在
基本上就这些。掌握 ::before 的用法后,能更灵活地丰富页面视觉层次,同时保持结构简洁。