Html 如何为DIV创建一个类似于textfield的“占位符”?
Div没有占位符属性 我想在DIV中显示,当用户将DIV中的整个文本退格,或者在DIV中没有文本时,我该怎么做?在HTML中Html 如何为DIV创建一个类似于textfield的“占位符”?,html,placeholder,Html,Placeholder,Div没有占位符属性 我想在DIV中显示,当用户将DIV中的整个文本退格,或者在DIV中没有文本时,我该怎么做?在HTML中 这是一个纯CSS的解决方案:- 在这里,我们基本上选择所有空的和模糊的内容。然后,我们在CSS选择editable div之前创建一个伪元素,并修复占位符文本,该文本将数据ph属性指定为其内容。 如果您的目标是老式的CSS2浏览器,请将所有出现的数据更改为标题 更正…….IE版本8及更早版本不支持:空选择器。您可以尝试此选项 html: 我在其他答案中发现,当使用:not
这是一个纯CSS的解决方案:- 在这里,我们基本上选择所有空的和模糊的内容。然后,我们在CSS选择editable div之前创建一个伪元素,并修复占位符文本,该文本将数据ph属性指定为其内容。 如果您的目标是老式的CSS2浏览器,请将所有出现的数据更改为标题 更正…….IE版本8及更早版本不支持:空选择器。您可以尝试此选项 html:
我在其他答案中发现,当使用:not:focus伪类时,我必须再次单击以获得闪烁的光标并能够键入。如果单击占位符以外的区域,则不会出现此类问题 我的解决方法只是删除:而不是:集中精力。即使通过这种方式,在我单击可编辑的div后占位符仍然存在,但无论我在div中单击什么位置,我都可以键入,并且在键入内容后占位符立即消失 顺便说一句,我检查了YouTube的comment div实现,似乎它们在做相同的事情,例如contenteditable root.yt格式的字符串[aria label].yt格式的字符串:空:before .editableDiv1, .editableDiv2{ 边框底部:1px纯色灰色; 大纲:无; 边缘顶部:20px; } .editableDiv1[contentEditable=true]:空:非:焦点:之前{ 内容:属性占位符 } .editableDiv2[contentEditable=true]:空:之前{ 内容:属性占位符 }
你能解释一下用户如何使用“backspace a div”吗?对不起,我的错,忘记编码了。在这种情况下,JavaScript将是你的朋友!你能给我举个例子吗?Thans,我从没想过你能用纯css做这样的smth。令人惊叹的非建设性评论:这太美了!干得好!如何在元素聚焦时保持占位符?如果没有not:focus选择器,插入符号将消失或出现在错误的位置。@boh,若要保留占位符(即使在元素聚焦时),请执行以下操作:[contentEditable=true]:空:在{content:attrdata ph}之前如果开始和结束div标签之间有任何字符或空格,这将不起作用。这与第一个答案有什么不同?
<div id="editable" contenteditable="true">
<p>Please your enter your Name</p>
</div>
jQuery.fn.selectText = function(){
var doc = document;
var element = this[0];
console.log(this, element);
if (doc.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
};
$("#editable").click(function() {
$("#editable").selectText();
});
<div contentEditable=true data-ph="My Placeholder String"></div>
<style>
[contentEditable=true]:empty:not(:focus):before{
content:attr(data-ph)
}
</style>
<div contentEditable=true data-text="Enter name here"></div>
[contentEditable=true]:empty:not(:focus):before{
content:attr(data-text) }