我试图为contenteditable div设置占位符,但这里有问题:占位符出现并抵消真实文本,即使div失去焦点,即使它不是空的。
HTML:
<div contenteditable="true" placeholder="Enter the text">
<br>
</div>
...我必须始终留下<br>
来杀死巨大的光标(主题中的那些)。我这里没有使用display: block
。
CSS:
[contenteditable=true]:nth-child(1):only-child:not(:focus):before {
content: attr(placeholder);
color: darkgrey;
}
...因为div
的空状态有一个孩子,我试图告诉它css,但它没有效果。
JSFiddle:http://jsfiddle.net/3wM36/。在div中键入内容并带走焦点。
如何解决这个问题?
答案 0 :(得分:3)
您无法根据子选择器选择具有CSS选择器的元素。如果您希望模拟placeholder
属性对可编辑div
元素的影响,则无需进行此类选择。 placeholder
的工作方式是,当字段中没有用户输入时显示,此具有对应项:您可以测试元素是否为空(即没有内容 - 没有子元素,也没有纯文本)。例如:
<style>
[contenteditable=true] {
border: solid 1px; /* Just to show what the area is. */
min-height: 1.2em;
}
[contenteditable=true]:empty:before {
content: attr(data-placeholder);
color: darkgrey;
}
</style>
<div contenteditable="true" data-placeholder="Enter the text"></div>
答案 1 :(得分:0)
你在找这个吗?
只需删除占位符属性
即可<div contenteditable="true">
<br>
</div>
的CSS:
div {
display: inline-block;
width: 200px;
border: 1px solid gainsboro;
position:relative;
}
div[contenteditable=true]:nth-child(1):only-child:not(:focus):before{
content:'Enter the text';
color: darkgrey;
position:absolute;
}