CSS【实战】可编辑元素实现 placeholder -- contenteditable=“true“

效果


技术要点

HTML 中,placeholder 属性原生支持 <input> 和 <textarea> 等表单元素,但对于可编辑元素(如 contenteditable="true" 的普通元素),需要通过CSS 实现类似 placeholder 的效果。

  • 利用 CSS 伪类 :empty 检测元素是否为空
  • 使用 ::before 伪元素显示占位文本
  • 结合 :focus 伪类在元素获得焦点时隐藏占位文本

代码

html 复制代码
<script setup lang="ts"></script>

<template>
  <div
    class="editable box"
    contenteditable="true"
    data-placeholder="请输入内容..."
  ></div>
</template>
<style scoped>
.box {
  min-height: 80px;
  padding: 12px;
  border: 1px solid #ddd;
  border-radius: 6px;
  outline: none;
  transition: border-color 0.2s;
}

.box:focus {
  border-color: #3b82f6;
  box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
}
/* 占位文本样式 */
.editable:empty::before {
  content: attr(data-placeholder);
  color: #9ca3af;
  pointer-events: none; /* 点击时不触发伪元素 */
}

/* 聚焦时隐藏占位文本 */
.editable:focus:empty::before {
  content: "";
}
</style>
相关推荐
ss27314 小时前
AI全栈实战 | 2.1-02 CSS 布局:垂直居中为什么是经典面试题?所有布局在解决什么矛盾
前端·css
peter67681 天前
css揭秘-背景和边框
前端·css
溪语流沙2 天前
【每天一个CSS | Day08】整排按钮被鼠标吸走的磁吸导航
前端·css·计算机外设
peter67682 天前
css学习小结
前端·css·学习
liangshanbo12152 天前
什么是CSS原子化?它的优劣势是什么?
前端·css·tensorflow·css原子化
Flynt2 天前
Linear 用 1000 个 PR 换掉 styled-components,我写了 200 个按钮,把这笔账复现了一遍
前端·css·preact
java_nnnn3 天前
JavaEE进阶-CSS初识
java·前端·css·java-ee·html
赵锦川3 天前
css代替表格
前端·css
小刘在重生~3 天前
CSS 零基础完整学习笔记|选择器|盒子模型|布局
css·笔记·学习
天天喝旺仔3 天前
浏览器渲染原理:从解析 HTML/CSS、构建渲染树到重排重绘与首屏优化
前端·javascript·css·性能优化·html