:empty伪类结合::before可为空元素插入提示。例如,.editable-placeholder:empty::before { content: "请输入内容..."; } 在无内容时显示提示,输入后自动消失。应用场景包括编辑器、留言列表、输入框等。注意元素必须完全为空,含空格或换行则不触发。样式由CSS控制,避免影响内容结构。

当元素内部没有任何内容时,CSS 的 :empty 伪类可以检测到这一点,结合 ::before 伪元素,就能在空元素中插入提示文字。这种技术常用于表单字段、内容容器等场景,提升用户体验。
使用 :empty 和 ::before 显示占位提示
:empty 匹配完全没有子元素、文本内容(包括空格)的元素。::before 可以在其内容前插入生成的内容。两者结合,可以在元素为空时自动显示提示信息。
注意:只要元素内包含空格、换行或注释,:empty 就不会匹配。确保元素真正“空”才能生效。
示例:为一个可编辑区域添加“请输入内容”的提示:
立即学习“前端免费学习笔记(深入)”;
.editable-placeholder:empty::before {
content: "请输入内容...";
color: #999;
font-style: italic;
}当用户未输入内容时,会显示灰色斜体提示;一旦输入内容,伪元素自动消失。
常见应用场景
- 富文本编辑器:空内容时显示“点击开始输入”
- 留言列表:无评论时显示“暂无留言”
- 自定义输入框:替代原生 placeholder 的视觉样式
- 卡片容器:数据加载前或为空时展示引导信息
避免常见问题
- HTML 中不要有缩进或换行,它们可能被视作文本节点,导致 :empty 失效
- 若需保留格式又想触发提示,可用 JavaScript 清空内容后再判断
- 提示文字用 CSS 控制样式,避免污染实际内容
- 对可编辑元素(contenteditable),用户删除所有内容后提示会重新出现
基本上就这些。不复杂但容易忽略细节。










