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>
相关推荐
JYeontu18 小时前
照片墙太死板?做一个会随风摇摆的绳串图片交互效果
前端·javascript·css
吹个口哨写代码19 小时前
小程序图片不显示,直接访问显示,头部配置问题
javascript·css·nginx
遇见~未来19 小时前
第一篇_认识CSS_风格的起点
前端·css
遇见~未来19 小时前
第二篇_CSS核心_盒子_布局_视觉
前端·css
林恒smileZAZ19 小时前
宇宙画布:纯 CSS+JS 实现交互式深空艺术
前端·javascript·css
ZC跨境爬虫20 小时前
跟着 MDN 学 HTML day_5:(原生table表格语义化搭建+CSS轻量化交互美化全实战)
前端·css·ui·html
里欧跑得慢1 天前
15. Web可访问性最佳实践:让每个用户都能平等访问
前端·css·flutter·web
心中无石马1 天前
uniapp引入tailwindcss4.x
前端·css·uni-app
用户059540174462 天前
asyncio 踩坑实录:这个问题坑了我3小时,差点让线上服务崩掉
前端·css
凯瑟琳.奥古斯特2 天前
Bootstrap快速上手指南
开发语言·前端·css·bootstrap·html