contenteditableな要素にplaceholderを与える

Ads

Result

タイトルの通り、contenteditableで編集可能な要素にplaceholderを与える、というもの

結果から言うと:emptyを使って何も入力されてない状態の時に:beforeで任意のテキストを挿入します

挿入するテキストはcontent: attr()で挿入します

Ads

css

[contenteditable=true]:empty:before{
  content: attr(placeholder);
  pointer-events: none;
  display: block; /* For Firefox */
}

div[contenteditable=true] {
  border: 1px dashed #AAA;
  width: 290px;
  padding: 15px;
}

CSSのみで完結します

html

<div contenteditable="true" placeholder="何か入力してみてください"></div>

CSS、HTMLともに簡単なコードで済むのでJSを使う必要はなさそうです。ブラウザさえ問題なければ

というわけでブラウザの対応状況を確認してみます

can i use

contenteditableのサポート状況です。古いiOSやFirefox以外は問題なさそうです

:emptyも問題なさそうですね。まぁそこまで高い需要のあるTipsでは無さそうですが。

via

Placeholder support for contentEditable elements, without JavaScript