Placeholder for contenteditable div

在前端开发中,有时需要让用户输入富文本内容,这时候可以使用 HTML 中的 contenteditable 属性来实现。然而,contenteditable 属性并没有内置的 placeholder 功能,也就是说如果用户没有输入内容,那么无法显示提示信息。因此,在本文中,我们将学习如何为 contenteditable div 元素添加 placeholder 功能。

实现方式

添加 placeholder 功能的方法有很多种,下面介绍两种常见的实现方式。

通过 JavaScript 实现

第一种方式是通过 JavaScript 实现,思路比较简单,即通过监听 contenteditable 元素的 focus 和 blur 事件,当元素获得焦点时移除 placeholder,失去焦点时再添加 placeholder。具体代码如下:

---- ----------- -----------------------------
--- ------ - ----------------------------------
--- ----------- - -----------

-------------------------------- ---------- -
  -- ----------------- --- ------------ -
    ---------------- - ---
  -
---

------------------------------- ---------- -
  -- ----------------- --- --- -
    ---------------- - ------------
  -
---

---------------- - ------------

通过 CSS 实现

第二种方式是通过 CSS 实现,原理是利用 ::before 伪类来插入占位符元素,并在 contenteditable 元素为空时显示占位符元素,非常简洁易懂。具体代码如下:

---- -------------- -----------------------------
--------------- -
  -------- -----------
  ------ -----
-

--------------------- -
  -------- ------------------
  ------ -----
-

兼容性

两种实现方式都比较简单,但是需要注意的是它们在不同浏览器的兼容性上存在差异。

第一种实现方式在 IE9 及以上版本、Chrome、Firefox、Safari 等主流浏览器中均可正常使用。

第二种实现方式在 IE10 及以上版本、Chrome、Firefox、Safari 等主流浏览器中均可正常使用,但是在 IE9 及以下版本中不支持 ::before 伪类,因此无法实现该功能。

总结

在本文中,我们学习了如何为 contenteditable div 元素添加 placeholder 功能,并且介绍了两种实现方式。虽然这两种方式在兼容性上存在差异,但是都比较简单易懂,可以根据具体业务场景选择适合自己的实现方式。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/30122