javascript - 选择文本时显示工具提示

标签 javascript html css

选择文本后,我想在底部显示一个工具提示,上面写着“已复制!”并且工具提示必须位于选择的中心。虽然我不确定如何实现工具提示以在选择后显示。这是我到目前为止所做的......

HTML

<p>
   <span class="selectable" tooltip="Copied!" tooltip-position='bottom'>
    Some lines of code
   <span>
</p>

CSS(用于工具提示)
[tooltip]{
  position:relative;
  display:inline-block;
}
[tooltip]::before {
    content: "";
    position: absolute;
    top:-6px;
    left:50%;
    transform: translateX(-50%);
    border-width: 4px 6px 0 6px;
    border-style: solid;
    border-color: rgba(0,0,0,0.9) transparent transparent;
    z-index: 99;
    opacity:0;
}
[tooltip-position='bottom']::before{
  top:100%;
  margin-top:8px;
  transform: translateX(-50%) translatey(-100%) rotate(-180deg)
}
[tooltip]::after {
    content: attr(tooltip);
    position: absolute;
    left:50%;
    top:-6px;
    transform: translateX(-50%)   translateY(-100%);
    background: rgba(0,0,0,0.9);
    text-align: center;
    color: #fff;
    padding:4px 2px;
    font-size: 12px;
    min-width: 80px;
    border-radius: 5px;
    pointer-events: none;
    padding: 4px 4px;
    z-index:99;
    opacity:0;
}
[tooltip-position='bottom']::after{
  top:100%;
  margin-top:8px;
  transform: translateX(-50%) translateY(0%);
}

[tooltip]:active::after,[tooltip]:active::before {
   opacity:1
}

任何帮助将不胜感激。 Vanilla javascript 也是首选。

最佳答案

像这样的东西应该工作。

var timeout;
document.querySelector(".selectable").addEventListener("mouseup", function(e) {
  var selection = document.getSelection();

  if (!selection.toString().trim().length)
    return;

  clearTimeout(timeout);
  document.execCommand('copy');

  var rect = selection.getRangeAt(0).getBoundingClientRect();

  $(this).tooltip("show");

  var tooltipLeft = Math.max(rect.left - ($('.tooltip').width() - rect.width), 0);

  $('.tooltip').css({
    left: tooltipLeft
  });

  var selectable = this;
  timeout = setTimeout(function() {
    $(selectable).tooltip("hide");
  }, 1000);
});

$('.selectable').tooltip({
  trigger: 'manual',
  placement: 'bottom'
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
<p>
  <span class="selectable" title="Copied!">Some lines of code</span>
</p>

关于javascript - 选择文本时显示工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341939/

相关文章:

html - 使列扩展页面的整个高度

javascript - 为什么这个 while 循环会导致无限循环?

javascript - CSS/Javascript中的 TreeMap 像布局

javascript - 使用 Javascript 仅刷新收藏夹

java - 如何在 Javadoc 中包含 Google Analytics 片段?

css - 将 CSS 网格行划分为相等的大小

html - 文章,第html5部分语义

javascript - 如何仅使用基本javascript基于文本框中的输入显示和隐藏div

javascript-如何在 json 字符串上使用正则表达式来搜索 JQuery 中的数据表列?

javascript - Click上的可折叠div高度问题