我试图实现类似Facebook在回复中输入@<NAME_OF_A_FRIEND>所做的操作。选择了一个朋友之后,该朋友的名称会用蓝色背景突出显示,因此您知道它是文本中的单独实体。
我已经使用“检查元素”来检查了这个文本区域,发现没有div置于文本区域之上。
有人能给我一些关于如何实现这个效果的提示吗?
我试图实现类似Facebook在回复中输入@<NAME_OF_A_FRIEND>所做的操作。选择了一个朋友之后,该朋友的名称会用蓝色背景突出显示,因此您知道它是文本中的单独实体。
我已经使用“检查元素”来检查了这个文本区域,发现没有div置于文本区域之上。
有人能给我一些关于如何实现这个效果的提示吗?
contentEditable="true"
属性的div
代替请查看此示例。我只使用了CSS和HTML……目前JS非常复杂,我不确定您期望什么。
HTML:
<div id="textback">
<div id="backmodel"></div>
</div>
<textarea id="textarea">Hey Nicolae, it is just a test!</textarea>
CSS:
#textarea {
background: transparent;
border: 1px #ddd solid;
position: absolute;
top: 5px;
left: 5px;
width: 400px;
height: 120px;
font: 9pt Consolas;
}
#backmodel {
position: absolute;
top: 7px;
left: 32px;
background-color: #D8DFEA;
width: 53px;
height: 9pt;
}
以下是一个简短的例子以说明此点:
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<style>
* { font-family: sans-serif; font-size: 10pt; font-weight: normal; }
.wrapper { position: relative; width: 400px; height: 400px; outline: solid 1px #666; }
.wrapper > * { position: absolute; top: 0; left: 0; height: 100%; width: 100%; margin: 0; padding: 0; }
.highlighter { background-color: #fff; color: #fff; }
.highlight { background-color: #9ff; color: #9ff; }
textarea { background-color: transparent; border: 0; }
</style>
</head>
<body>
<div class="wrapper">
<div class="highlighter">
This <span class="highlight">is a</span> demonstration.
</div>
<textarea>
This is a demonstration.
</textarea>
</div>
</body>
</html>
你好,你可以查看这个类似Facebook的jQuery自动建议插件。我已经使用它来实现你所需的相同功能。 http://www.devthought.com/2008/01/12/textboxlist-meets-autocompletion/
display: inline-block; background-color: #YOURCOLOR;
。这样做可以完全实现您想要的效果,而不需要上面某些答案中的所有复杂性。.name {display: inline-block; background-color: purple;}
$(yourNameSelectorGoesHere).addClass(".name");
textarea
元素变为透明,并在其下方放置一个div
。请使用 Chrome 检查textarea
元素并将其删除,然后再次查找该元素。 - David Rodrigues