【问题标题】:Placing D3 tooltip in cursor location将 D3 工具提示放置在光标位置
【发布时间】:2016-09-07 06:43:58
【问题描述】:

我在可视化中使用d3-tip。我现在想为非常宽且可能超出可见画布的元素添加工具提示。默认情况下,工具提示显示在对象的水平中心,这意味着在我的情况下,工具提示可能不在可见区域中。我需要的是显示在光标水平位置的工具提示,但我不知道如何正确更改工具提示位置。我可以设置一个偏移量,我可以得到光标的坐标,但我不能得到的是工具提示的初始位置,这样我就可以计算出正确的偏移量。我也不能设置绝对位置:

            .on("mouseover",function(d){
                var coordinates = [0, 0];
                coordinates = d3.mouse(this);
                var x = coordinates[0];
                var y = coordinates[1];
                tip.offset([-20,20]); // this works
                tip.attr("x",40); // this doesn't
                tip.show(d);
            })

【问题讨论】:

  • 你说得对,我不知道我的想法在哪里......刚刚删除了cmets。

标签: javascript d3.js


【解决方案1】:

如果要使用offset,可以在tip.show(d)之后得到tooltip的初始位置:

tip.style('top');
tip.style('left');

同理,设置绝对位置:

.on('mouseover', function(d){
        var x = d3.event.x,
            y = d3.event.y;

        tip.show(d);

        tip.style('top', y);
        tip.style('left', x);
      })

【讨论】:

  • 我可以得到坐标但我不能设置它们,例如tip.style("top", 20) 没有效果,我已经把它放在tip.show(d) 之前和之后...
  • 坐标在与 'px' 一起使用时有效 - 见下文。
【解决方案2】:

前面所说的答案对我不起作用(并且不能修改为“建议的编辑队列已满..”),但经过一些小的调整,它工作正常:

.on('mouseover', function(d){
    var x = d3.event.x,
        y = d3.event.y;

    tip.show(d);

    tip.style('top', y-10 + 'px'); // edited
    tip.style('left', x+'px'); // edited
  })

【讨论】:

  • 我不再使用 D3,但我会相信你的话并接受这个答案。您是否通过任何更改使用 Edge 或 Firefox?那么问题似乎是没有px,一些浏览器不接受坐标作为有效的CSS。 (具有讽刺意味的是,我自己发现了five years ago
  • 这是一个很好的说明 - 我使用的是 Firefox。我刚刚在 Firefox 和 Chrome & Edge(基于铬)中测试了两个代码 sn-ps。使用建议的 +'px' 使工具提示在所有三个中都兼容,否则只有基于 chromium 的浏览器可以处理坐标。
猜你喜欢
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多