【问题标题】:Make CSS tooltip follow cursor使 CSS 工具提示跟随光标
【发布时间】:2014-04-28 06:34:43
【问题描述】:

我正在创建一个基于 CSS 的工具提示,它将在工具提示中包含大量内容,而不是在静态位置,我想知道是否有一种简单的方法可以让它在您将鼠标悬停在链接。

这是一个基于 CSS 的工具提示示例

<div class="couponcode">First Link
    <span class="coupontooltip">Content 1</span>
</div>

.couponcode:hover .coupontooltip {
display: block;
}

.coupontooltip {
display: none;
background: #C8C8C8;
margin-left: 28px;
padding: 10px;
position: absolute;
z-index: 1000;
width:200px;
height:100px;
}

http://jsfiddle.net/q46Xz/

【问题讨论】:

标签: javascript jquery css


【解决方案1】:

类似的东西

var tooltip = document.querySelectorAll('.coupontooltip');

document.addEventListener('mousemove', fn, false);

function fn(e) {
    for (var i=tooltip.length; i--;) {
        tooltip[i].style.left = e.pageX + 'px';
        tooltip[i].style.top = e.pageY + 'px';
    }
}

FIDDLE

【讨论】:

  • 谢谢,虽然我可以调整工具提示与鼠标的距离,但我已经成功了?如果您在帖子底部查看我的页面stormable.com/hero-lore-demon-hunter,您会看到一个名为“illidan”的链接,如果您将光标放在它上面,您会注意到工具提示与光标一起出现,但在它下方 200px 并且向右。
  • @Greenhoe - 只需加减一点,就像这样 -> jsfiddle.net/q46Xz/188
  • 谢谢,虽然你能解释一下为什么原来的小提琴和我的网站使用相同的代码,但显示的长度与光标不同吗?我必须将 pageX - 275 和 pageY 设置为 - 100 左右。为什么我的网站已经有了这些值,以至于我需要重新调整它们?
  • 一个合适的插件会解决窗口大小调整、浏览器不一致等问题,但你不能指望在这里得到它,答案告诉你如何随鼠标光标移动一些东西,如果你想适用于每种情况的东西使用插件。这是source for qTip,我无法编写所有代码作为快速答案,正确的工具提示很复杂,这就是大多数人使用插件的原因。
  • 可以理解,感谢您帮助我更好地理解这一切,我会研究您推荐的插件
【解决方案2】:

这是一个考虑了窗口高度和宽度的版本:

function showTooltip(e) {
  var tooltip = e.target.classList.contains("coupontooltip")
      ? e.target
      : e.target.querySelector(":scope .coupontooltip");
  tooltip.style.left =
      (e.pageX + tooltip.clientWidth + 10 < document.body.clientWidth)
          ? (e.pageX + 10 + "px")
          : (document.body.clientWidth + 5 - tooltip.clientWidth + "px");
  tooltip.style.top =
      (e.pageY + tooltip.clientHeight + 10 < document.body.clientHeight)
          ? (e.pageY + 10 + "px")
          : (document.body.clientHeight + 5 - tooltip.clientHeight + "px");
}

var tooltips = document.querySelectorAll('.couponcode');
for(var i = 0; i < tooltips.length; i++) {
  tooltips[i].addEventListener('mousemove', showTooltip);
}
.couponcode {
    color: red;
    cursor: pointer;
}

.couponcode:hover .coupontooltip {
    display: block;
}

.coupontooltip {
    position: absolute;
    white-space: nowrap;
    display: none;
    background: #ffffcc;
    border: 1px solid black;
    color: black;
    padding: 5px;
    z-index: 1000;
}
Lorem ipsum dolor sit amet, <span class="couponcode">consectetur
adipiscing<span class="coupontooltip">This is a tooltip</span></span>
elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi
ut aliquip ex ea commodo consequat. Duis aute irure dolor in <span
class="couponcode">reprehenderit<span class="coupontooltip">This is
another tooltip</span></span> in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est <span
class="couponcode">laborum<span class="coupontooltip">This is yet
another tooltip</span></span>.

(另见this Fiddle

【讨论】:

  • 它看起来很棒,但不幸的是当应用于表格的&lt;td&gt; 元素时无法正常工作:提示仅在表格完成后很长时间才会显示,接近甚至超过页面的页脚。
猜你喜欢
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多