JQuery - 保持工具提示在视图中

发布于 2024-12-02 07:43:16 字数 860 浏览 1 评论 0原文

我似乎能够垂直实现这一点,但我似乎无法使水平翻转工作。

$("a.tooltip").mousemove(function(e) {
    //$("#tooltip")
        //.css("top",(e.pageY - xOffset) + "px")
        //.css("left",(e.pageX + yOffset) + "px");
    var posY;
    var posX;

    // Flip Tooltip Vertically
    if (e.pageY - $(window).scrollTop() + $('#tooltip').height() >= $(window).height() ) {
        posY = $(window).height() + $(window).scrollTop() - $('#tooltip').height() - 20 ;
    } else {
        posY = e.pageY - 20;
    }

    // Flip Horizontally?
    if (e.pageX - $(window).scrollLeft() + $('#tooltip').width() >= $(window).width() ) {
        posX = $(window).width() + $(window).scrollTop() - $('#tooltip').width() - 20 ;
    } else {
        posX = e.pageX - 20;
    }

    $("#tooltip")
        .css("top",(posY) + "px")
        .css("left",(posX) + "px");
});

I seem to have been able to achieve this vertically but I can't seem to get the horizontal flip to work.

$("a.tooltip").mousemove(function(e) {
    //$("#tooltip")
        //.css("top",(e.pageY - xOffset) + "px")
        //.css("left",(e.pageX + yOffset) + "px");
    var posY;
    var posX;

    // Flip Tooltip Vertically
    if (e.pageY - $(window).scrollTop() + $('#tooltip').height() >= $(window).height() ) {
        posY = $(window).height() + $(window).scrollTop() - $('#tooltip').height() - 20 ;
    } else {
        posY = e.pageY - 20;
    }

    // Flip Horizontally?
    if (e.pageX - $(window).scrollLeft() + $('#tooltip').width() >= $(window).width() ) {
        posX = $(window).width() + $(window).scrollTop() - $('#tooltip').width() - 20 ;
    } else {
        posX = e.pageX - 20;
    }

    $("#tooltip")
        .css("top",(posY) + "px")
        .css("left",(posX) + "px");
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖阳 2024-12-09 07:43:16

我并没有真正遵循您的代码,但这里是另一个项目的片段,可能会有所帮助。您可以调整 x、y 和 limitY 的值,使其适合您的设计。

$('a.tooltip').mousemove(function(e) {
    var x = pageX = e.pageX,
        y = pageY = e.pageY,
        $elem = $( '#tooltip' ),
        height = $elem.outerHeight( true ),
        width = $elem.outerWidth( true ),
        limitY = height + 15,
        maxX = $(window).width() - width,
        maxY = $(window).height() - height;

    if ( !isNaN(x) && !isNaN(y) ) {

        x += 10;
        y -= 30;

        x = Math.max( 0, Math.min( maxX, x ) );
        y = Math.max( 0, Math.min( maxY, y ) );

        if( pageY < limitY ) {
            y = limitY;
        }

        $elem.css({ left: x, top: y });
    }
});

I'm not really following your code, but here is a snippet from another project that might be of help. You can adjust the values of x, y and limitY so it fits your design.

$('a.tooltip').mousemove(function(e) {
    var x = pageX = e.pageX,
        y = pageY = e.pageY,
        $elem = $( '#tooltip' ),
        height = $elem.outerHeight( true ),
        width = $elem.outerWidth( true ),
        limitY = height + 15,
        maxX = $(window).width() - width,
        maxY = $(window).height() - height;

    if ( !isNaN(x) && !isNaN(y) ) {

        x += 10;
        y -= 30;

        x = Math.max( 0, Math.min( maxX, x ) );
        y = Math.max( 0, Math.min( maxY, y ) );

        if( pageY < limitY ) {
            y = limitY;
        }

        $elem.css({ left: x, top: y });
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文