选择文本时显示工具提示

oknwwptz  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(457)

选择文本后,我想在底部显示一个工具提示,上面写着“已复制!”而且工具提示必须位于选择的中心。虽然我不知道如何实现工具提示,使其在选中后显示。这就是我到目前为止所做的。。。
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
}

任何帮助都将不胜感激。此外,香草javascript是首选。

hi3rlvi2

hi3rlvi21#

这样的办法应该行得通。

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>
7uzetpgm

7uzetpgm2#

这是一个简单的解决方案

function getTooltip(e) {
  e.stopPropagation();
  var tar = e.target.getBoundingClientRect();
  $('.tooltip').css({
    top: tar.bottom,
    left: tar.y
  }).show();
}

$(document).on("click", function(e) {
  e.stopPropagation();
  $('.tooltip').hide();
});
.tooltip {
  position: fixed;
  padding: 5px;
  border: 1px solid #474747;
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
   <span class="selectable" onClick="getTooltip(event)">
      Some lines of code
   <span>
</p>

<div class="tooltip">
  Copied!!!
</div>

希望这对你有帮助。

相关问题