【问题标题】:jquery click position after css zoom / -webkit-transformcss缩放/-webkit-transform后jquery点击位置
【发布时间】:2012-06-21 15:41:37
【问题描述】:

我有一个使用固定 CSS 宽度的 Web 应用程序。 (1280 像素)。

使用 jquery,我添加了类似

的内容
$("html").css("zoom",window["zoomRatio"], "important");

还有-webkit-transform 和 Mozilla 的那个。

一切正常,除了我意识到我的一个带有 jquery flot 插件的图表不起作用(工具提示仍然在缩放之前的原始位置触发)

查看它,我意识到是 jquery.bind() 导致了问题。无论如何我可以改变鼠标悬停的位置吗?

基本上我正在寻找一种方法来假装鼠标处于不同的位置。我在网上查找了这些信息,但找不到太多有用的信息。

谢谢

编辑(我的工具提示代码)

   function showTooltip(x, y, contents) {
    $('<div id="tooltip">' + contents + '</div>').css( {
        position: 'absolute',
        display: 'none',
        top: y + 5,
        left: x + 5,
        border: '1px solid #fdd',
        padding: '2px',
        'background-color': '#fee',
        opacity: 0.80
    }).appendTo("body").fadeIn(200);
}

var previousPoint = null;
$("#placeholder").bind("plothover", function (event, pos, item) {
    $("#x").text(pos.x.toFixed(2));
    $("#y").text(pos.y.toFixed(2));

    if ($("#enableTooltip:checked").length > 0) {
        if (item) {
            if (previousPoint != item.dataIndex) {
                previousPoint = item.dataIndex;

                $("#tooltip").remove();
                var x = item.datapoint[0].toFixed(2),
                    y = item.datapoint[1].toFixed(2);

                showTooltip(item.pageX, item.pageY,
                            item.series.label + " of " + x + " = " + y);
            }
        }
        else {
            $("#tooltip").remove();
            previousPoint = null;            
        }
    }
});

【问题讨论】:

  • $('body').css 会代替 $('html').css 工作吗?另外,尝试$('html, body').css 将它们都选中。
  • 谢谢。但他们都没有工作......
  • 然后似乎解决方案将使用工具提示,因为它跟不上位置变化。您没有显示任何工具提示标记或要评论的代码。

标签: javascript jquery css hover zooming


【解决方案1】:

由于您的 工具提示 具有为该函数提供的传入 x 和 y 值,因此您需要测试当前缩放条件是否为 true。

编辑:这是通过创建一个新的if statement 来完成的,该if statement 具有两个新变量zoomActivated 和zoomOnset,以使用您现有的标记。只要缩放条件为真,就会调用此 if 语句。

片段代码示例:

function showTooltip(x, y, contents) {

    if(zoomActivated){

        x = x + zoomOnset;
        y = y + zoomOnset;

    }

    $('<div id="tooltip">' + contents + '</div>').css( { ....

上面将检查zoomActivated 是否为布尔值true,如果是,则调整x 和y 以补偿受缩放方法影响的对象位置.该变量在您调用 jQuery 缩放方法时设置为 true,并在该缩放方法完成/返回到原始状态时重置为 false。

全局变量zoomOnset 基于当前缩放幅度,假设缩放同时针对x 和y。实际值是反映固定缩放值的固定值。

【讨论】:

  • 谢谢。我试过了,但我不认为 zoomActivated 和 zoomOnset 已设置。
  • 另外,我相信如果它确实存在,它会检测鼠标点击的位置,而不是工具提示的显示位置
  • 这两个变量不存在,因此进行测试以查看缩放条件是否为真。也就是说,需要使用我的 Answer 作为模板来创建额外的标记才能让您到达那里。我没有提到这两个变量是新的,因为任何人都可以看到你提供的标记。可以肯定的是,我编辑了我的答案以包含这个明显的评估。
  • ...例如,当$("html").css("zoom",window["zoomRatio"], "important"); 被调用时,zoomActivated 被设置为1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 2014-03-08
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 2013-06-02
相关资源
最近更新 更多