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>
相关推荐
用户0595401744614 小时前
把前端内存泄漏排查从2小时压到5分钟,我们把它集成进了CI
前端·css
zhanghaofaowhrql3 天前
为CSDN博客编辑器安装自定义CSS主题,打造个性化写作界面
前端·css·编辑器
aichitang20243 天前
Claude fable 5与GPT5.5模型能力实测
javascript·css·人工智能·ai·html·html5
就叫飞六吧3 天前
F12 控制台日志移植到页面案例
javascript·css·html
Bigger4 天前
对不起!我错怪你了,UnoCSS:一次和 AI 一起排查 DevTools 卡顿的经历
前端·css·人工智能
触底反弹4 天前
🎲 纯 CSS 搞定 3D 旋转立方体?还附赠一个「天坑」解决方案!
前端·css·html
finyouIT5 天前
锚点实现了点击导航平滑滚动到页面指定位置的三种方法
javascript·css
用户059540174465 天前
用了半年 LangChain Memory,才发现记忆总“串台”——3 个自动化测试避坑指南
前端·css
More more5 天前
纯手搓css样式:科技感弹窗边框
css·科技·css3
kidding7235 天前
旋转大转盘小程序
前端·css·微信小程序·小程序·前端框架