输入文本内的图像

Eli*_*ion 47 html javascript css jquery

如何创建自定义输入文本元素,以便将图像与文本组合在一起?

基本上这些图像是从CDN加载的表情符号.

澄清:
我希望实现的是一个<input type="text" />元素,它可能包含图像作为输入的一部分.

Jos*_*ier 76

使用<img>元素内部的contenteditable元素:

虽然不能直接将<img>元素放在<input type="text" />元素中,但是可以通过使用contenteditable元素并将<img>元素放在其中来实现类似的功能.

以下是在元素中使用Twitter的表情符号图像的示例contenteditable:

[contenteditable] {
  border: 1px solid #000;
  line-height: 1.4em;
  -webkit-appearance: textfield;
  appearance: textfield
}
img {
  vertical-align: top;
  max-height: 1.4em;
  max-width: 1.4em;
}
Run Code Online (Sandbox Code Playgroud)
<p>This looks like an <code>input</code> element:</p>

<div contenteditable="true">
  See: <img src="//i.stack.imgur.com/nO2hl.png"/> <img src="//i.stack.imgur.com/iUDpH.png"/> You can even copy/paste these images within this field <img src="//i.stack.imgur.com/QrKSV.png"/>
</div>
Run Code Online (Sandbox Code Playgroud)

您还可以添加一些JavaScript以将图像/图标动态插入到字段中.如果你想获得幻想,可以将图像插入插入符号的位置.

document.querySelector('.selectable-icons').addEventListener('click', function(e) {
  if (e.target.tagName.toLowerCase() === 'img') {
    document.querySelector('[contenteditable]').appendChild(e.target.cloneNode(true));
  }
});
Run Code Online (Sandbox Code Playgroud)
[contenteditable] {
  border: 1px solid #000;
  margin: 0.4em 0;
  line-height: 1.4em;
  -webkit-appearance: textfield;
  appearance: textfield;
}
img {
  vertical-align: top;
  max-height: 1.4em;
  max-width: 1.4em;
}
.selectable-icons img {
  cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)
<p>Just click on an icon to add it.</p>

<div class="custom-input">
  <div class="selectable-icons">
    <img src="//i.stack.imgur.com/nO2hl.png" /><img src="//i.stack.imgur.com/IkjJW.png" /><img src="//i.stack.imgur.com/QrKSV.png" /><img src="//i.stack.imgur.com/sZpOK.png" /><img src="//i.stack.imgur.com/d7HIy.png" /><img src="//i.stack.imgur.com/iUDpH.png" /><img src="//i.stack.imgur.com/IjpTt.png" /><img src="//i.stack.imgur.com/rDCTA.png" /><img src="//i.stack.imgur.com/YtkL1.png" /><img src="//i.stack.imgur.com/wPXCd.png" />
  </div>
  <div contenteditable="true">
    You can type here. Add an icon.
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)


<input>元素中使用unicode :

如果这不可行,则必须使用unicode字符.这就是表情符号在iOS和Android设备上的工作方式.

例如,您可以在元素中使用Font Awesome unicode字符<input>.同样,您可以创建自己的图标/图像库,并使用unicode字符表示它们:

<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"/>

<p>Font awesome icons (unicode):</p>
<input type="text" class="fa" value="See: &#xf179; &#xf118; &#xf16c;" />


<p>Standard unicode:</p>
<input type="text" value="See: &#x2714; &#x2639; &#x263a;" />
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢! (2认同)
  • 我怎么没听说过这个 (2认同)