【问题标题】:Highlight a div element in a content editable input as if it was text突出显示内容可编辑输入中的 div 元素,就像它是文本一样
【发布时间】:2018-06-01 18:53:17
【问题描述】:

我目前有以下 JS Fiddle 在内容可编辑输入中显示带有背景图像的 div。我希望能够像文本一样突出显示 div。

.input {
  border: 1px solid black;
  width: 200px;
}

.emoji {
  width: 16px;
  height: 16px;
  background-size: contain;
  display: inline-block;
  background-image: url(https://twemoji.maxcdn.com/2/72x72/1f609.png);
}
<div contenteditable="true" class="input">
    <div class='emoji'/>
</div>

请注意,在上面的小提琴中,试图用鼠标突出显示表情符号,就好像它是文本一样,并没有正确突出显示表情符号。

我尝试了以下 2 个解决方案,但都没有奏效。

1) 在 emoji div 上设置一个tab-index="-1" 并添加以下 css 来设置背景颜色以使 emoji 看起来突出显示

.emoji {
    &:focus {
        background-color: #338fff;
    }
}

2) 使用::selected css 并设置背景颜色使其看起来突出显示

.emoji {
    &:selected {
        background-color: #338fff;
    }
}

感谢任何帮助!

【问题讨论】:

  • 很不清楚你在问什么
  • 任何 CSS 背景图像都将不可选择。背景图片是“展示”的一部分,而不是“内容”的一部分。
  • 您能解释一下为什么要突出显示表情符号吗?如果您希望用户能够复制/更改它,那么如果没有 JavaScript,这将是不可能的。

标签: html css contenteditable


【解决方案1】:

将 emoji div 更改为图像标签并将其链接到透明源。

#input {
  border: 1px solid black;
  width: 200px;
}

.emoji {
  width: 16px;
  height: 16px;
  background-size: contain;
  display: inline-block;
  background-image: url(https://twemoji.maxcdn.com/2/72x72/1f609.png);
}
<div contenteditable="true" id="input">
  <img src="http://upload.wikimedia.org/wikipedia/commons/c/ce/Transparent.gif" class="emoji"/>
</div>

【讨论】:

    【解决方案2】:

    不清楚你在问什么。以下内容对您有何帮助?

    .input {
      border: 1px solid black;
      height:27px;
      width: 200px;
    }
    
    .emoji {
      width:16px;
      height:16px;
      background-size: contain;
      margin:0 auto;
      margin-top:6px;
     
    
      display: block;
      background-image: url(https://twemoji.maxcdn.com/2/72x72/1f609.png);
    }
    
    #a1{
    width:173px;
    display:block;
    float:right;
    line-height:1.1;
    }
    
    #a2{
    display:inline-block;
     background-color: #338fff;
     width:27px;
     height:27px;}
    <div  class="input">
       <div id='a2'>
           <div class='emoji' ></div>
       </div>    
      <div id='a1' contenteditable="true">1234</div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 2015-05-25
      • 2012-06-16
      • 2015-08-22
      • 1970-01-01
      相关资源
      最近更新 更多