当我的div
元素为空时,我希望向用户显示一些文本。
我尝试给我的div
添加placeholder属性,但是文本没有被显示。
<div placeholder="Enter the text"> </div>
当我的div
元素为空时,我该如何显示一条消息?
当我的div
元素为空时,我希望向用户显示一些文本。
我尝试给我的div
添加placeholder属性,但是文本没有被显示。
<div placeholder="Enter the text"> </div>
当我的div
元素为空时,我该如何显示一条消息?
有很多使用JavaScript的选项,但如果你想在CSS中完成,请尝试这个:
[contentEditable=true]:empty:not(:focus):before {
content: attr(data-text)
}
<div contentEditable=true data-text="Enter text here"></div>
title
而不是 data-text
。 - Joke_Sense10:not(:focus)
,实际上它的行为就像一个真正的占位符。 - user4676340我已经在这里回答过这样一个问题,并使用了这个测试:http://codepen.io/gcyrillus/pen/hzLIE
div:empty:before {
content:attr(data-placeholder);
color:gray
}
使用纯CSS,也可以实现不需要使用contentEditable属性的效果。
使用:empty伪类和::before伪元素,您可以向空元素添加占位符。
以下示例为未定义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';
}
<div data-placeholder='data- placeholder'></div>
<br>
<div></div>
假设你想让用户输入一些文本,并在输入框中显示一些占位符,那么你可以使用以下代码:
<input type="text" value="Enter the text" onfocus="if(this.value=='Enter the text'){this.value='';}" onblur="if(this.value==''){this.value='Enter the text';}" />
当然可以将输入包装在一个div中。
<div><input [...] /></div>
这将确保在空的 div 中有一个光标
[contentEditable="true"]:empty:not(:focus):before {
content: attr(data-placeholder);
}
[contentEditable="true"]:empty:focus:before {
content: " ";
}