HTML-工具提示相对于鼠标指针的位置

新手上路,请多包涵

如何将工具提示对齐为自然样式:鼠标指针的右下角?

 <!DOCTYPE html>
<html>
<head>
  <title>Tooltip with Image</title>
  <meta charset="UTF-8">
  <style type="text/css">
    .tooltip {
        text-decoration:none;
        position:relative;
    }
     .tooltip span {
        display:none;
    }
     .tooltip span img {
        float:left;
    }
     .tooltip:hover span {
        display:block;
        position:absolute;
        overflow:hidden;
    }
  </style>
</head>
<body>
  <a class="tooltip" href="http://www.google.com/">
    Google
    <span>
      <img alt="" src="http://www.google.com/images/srpr/logo4w.png">
    </span>
  </a>
</body>
</html>

原文由 Ben 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 357
2 个回答

对于默认工具提示行为,只需添加 title 属性。虽然这不能包含图像。

 <div title="regular tooltip">Hover me</div>

在你澄清我用纯 JavaScript 完成的问题之前,希望你觉得它有用。图像将弹出并跟随鼠标。

jsFiddle

JavaScript

 var tooltipSpan = document.getElementById('tooltip-span');

window.onmousemove = function (e) {
    var x = e.clientX,
        y = e.clientY;
    tooltipSpan.style.top = (y + 20) + 'px';
    tooltipSpan.style.left = (x + 20) + 'px';
};

CSS

 .tooltip span {
    display:none;
}
.tooltip:hover span {
    display:block;
    position:fixed;
    overflow:hidden;
}

扩展多个元素

多个元素的一种解决方案是更新所有工具提示 span 并在鼠标移动时将它们设置在光标下。

jsFiddle

 var tooltips = document.querySelectorAll('.tooltip span');

window.onmousemove = function (e) {
    var x = (e.clientX + 20) + 'px',
        y = (e.clientY + 20) + 'px';
    for (var i = 0; i < tooltips.length; i++) {
        tooltips[i].style.top = y;
        tooltips[i].style.left = x;
    }
};

原文由 Daniel Imms 发布,翻译遵循 CC BY-SA 3.0 许可协议

在没有 JS 的情况下执行此操作的一种方法是使用悬停操作来显示隐藏的 HTML 元素,请参阅此代码笔:

http://codepen.io/c0un7z3r0/pen/LZWXEw

请注意,包含工具提示内容的 span 是相对于父 li 的。魔术就在这里:

 ul#list_of_thrones li > span{
  display:none;
}
ul#list_of_thrones li:hover > span{
  position: absolute;
  display:block;
  ...
}

如您所见,除非列表项悬停在上方,否则 span 是隐藏的,从而显示 span 元素,span 可以包含您需要的 html。在随附的代码笔中,我还为箭头使用了 :after 元素,但这当然是完全可选的,并且仅包含在本示例中用于装饰目的。

我希望这会有所帮助,我觉得有必要发布,因为所有其他答案都包括 JS 解决方案,但 OP 要求仅提供 HTML/CSS 解决方案。

原文由 Anthony Cregan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题