是否可以在div标签中添加占位符

use*_*123 40 html css

当我的div元素为空时,我想向用户显示一些文本.

我已经尝试向我添加占位符属性div但文本未显示.

<div placeholder="Enter the text"> </div>
Run Code Online (Sandbox Code Playgroud)

div元素为空时如何显示消息?

Jok*_*e10 136

使用javascript有很多选项,但如果你想在css中这样做.试试这个:

HTML:

<div contentEditable=true data-text="Enter text here"></div>
Run Code Online (Sandbox Code Playgroud)

CSS:

[contentEditable=true]:empty:not(:focus):before{
    content:attr(data-text)
}
Run Code Online (Sandbox Code Playgroud)

演示

  • 请注意,如果在开始和结束div标签之间有任何字符或空格,这将不起作用. (5认同)
  • 那太漂亮了!我从来没有见过这样解决过这么整洁.我可以询问兼容性吗?因为我也想使用它:) (2认同)
  • 这彻底打动了我的脑海.谢谢! (2认同)
  • 简而言之,谢谢。我可以通过从CSS选择器中删除`:not(:focus)`来补充一点,实际上它的行为就像一个真实的占位符。 (2认同)

G-C*_*Cyr 17

我已经通过这个测试回答了这个问题:http://codepen.io/gcyrillus/pen/hzLIE

div:empty:before {
  content:attr(data-placeholder);
  color:gray
}
Run Code Online (Sandbox Code Playgroud)

请参阅如果可编辑div没有文本而不是设置占位符


mat*_*tt. 5

这也可以通过使用普通CSS 而不使用contentEditable属性来实现。

使用:empty伪类和:: before伪元素,可以将占位符添加到空元素。

下面的示例为未定义属性的div元素提供一个后备占位符data-placeholder

例:

div:empty::before {
  color: grey;
}
div[data-placeholder]:not([data-placeholder=""]):empty::before {
  content: attr(data-placeholder);
}
div:empty::before {
  content: 'fallback placeholder';
}
Run Code Online (Sandbox Code Playgroud)
<div data-placeholder='data- placeholder'></div>
<br>
<div></div>
Run Code Online (Sandbox Code Playgroud)