0

我有一些工具提示的玩具代码。它可以正常工作,只是当您将鼠标移入工具提示时,它会被此逻辑隐藏。

我正在努力寻找一种干净的方法来让工具提示在您将鼠标移入其中时保持可见,并在您将鼠标移出两个区域时消失。有人有建议吗?

请参阅示例。

HTML

<div id="container">
    <div id="div1"></div>
    <div id="div2"></div>
</div>

Javascript

var div1 = $("#div1");
var div2 = $("#div2").hide();

var hoverTimer;
div1.mouseenter(function(e) {
    var x = e.pageX;
    var y = e.pageY;
    div1.mousemove(function(e) {
        x = e.pageX;
        y = e.pageY;
    });
    hoverTimer = window.setTimeout(function() {
        div2.css("left", x);
        div2.css("top", y);
        div2.show();
    }, 400);
});

div1.mouseleave(function(e) {
    window.clearTimeout(hoverTimer);
    div2.hide();
});

CSS

#container {
    position: relative;
}
#div1 {
    float: left;
    clear: none;
    width: 200px;
    height: 200px;
    background-color: green;
}
#div2 {
    position: absolute;
    width: 100px;
    height: 100px;
    background-color: blue;
}
4

2 回答 2

4

您创建了mousemove事件,但除了设置两个变量之外,您实际上从未移动工具提示。试试这个。注意我在鼠标位置上添加了一个 16 像素的“边距”——这是为了使它更符合实际的工具提示,并防止闪烁效果。

于 2012-06-15T21:19:18.693 回答
0

显示工具提示的最佳方式是仅使用 css。

例如

假设我有我必须提供 tooltip 的元素。我将为该元素提供数据属性,然后使用 css 我将访问该属性,然后将显示如下所示的工具提示

<a data-tool-tip="my tool tip"> my link goes here</a> this is other text

和 css 将如下所示

a[data-tool-tip]{
   position:relative;
}


a[data-tool-tip]::after {
    content: attr(data-tool-tip);
    display:block;
    position:absolute;
    background:gray;
    padding:10px;
    color:white
    border-radius:5px
    font-size:0.8em;
    bottom:100%;
    left:0;
     white-space:nowrap; 
     transform:scale(0);
transition:transform ease-out 150ms;
    }

 a[data-tool-tip]:hover::after {
 transform:scale(1);
}

由于使用选择器附加到元素本身的工具提示,::before 它也将在鼠标进入后可见;

输出将如下所示

在此处输入图像描述

于 2019-02-23T17:23:42.723 回答