2

我是网络编程的新手。

我想在 facebook 中实现类似的东西,当我们将鼠标悬停在链接上时,锚定在链接上的箭头浮动 div 将显示在其顶部。

你们都如何解决这种组件?我找到的最近的库是http://gristmill.github.com/jquery-popbox/这有时在某些浏览器中不起作用。进一步搜索“Popbox”没有显示任何有用的结果。任何人都可以推荐任何类似的图书馆,比如我发布的链接吗?它可以使用 Jquery、Javascript、CSS、html 等。

除了使用库之外,谁能以最简单的方式向我展示如何在不使用库的情况下做到这一点。我只是想知道背后的粗略想法。大多数库都带有复杂的代码,初学者很难学习。

非常感谢先进。

4

2 回答 2

3

检查这个工作演示:http: //jsfiddle.net/fedmich/Aapw6/

您需要在顶部创建一个箭头图像并在弹出框中居中,然后通常移动弹出框以跟随目标锚点。

$('.hover').hover(function(){
        var popup_div = $('.popup_div');
        var obj = $(this);
        var offset = obj.offset();

        var new_top = offset.top + 30;

        var new_left = offset.left;

        new_left = new_left - ( popup_div.width() / 2);
        new_left = new_left + ( obj.width() / 2);

        popup_div.css('left', new_left + 'px');
        popup_div.css('top', new_top + 'px');

        popup_div.show();
    }
    , function (){
        //hovered away so hide popup
        $('.popup_div').hide();
    }
    );

CSS 代码应该是绝对位置

.popup_div{
    position:absolute;
    left:100px;
    top:100px;
    border:1px solid red;
    background-color:blue;
    width:150px;
    height:150px;
    background:url("http://i.imgur.com/zFWft.png") no-repeat scroll center 0 transparent;
    text-align:left;
}

您可以通过获取目标 div 的位置,然后通过将宽度除以一半并将其添加到左侧来获取中心。

    new_left =  hovered_thing.left + (hovered_thing.width / 2) - (popup_div.width / 2)

不过,让我在另一张纸条上尽快为您解答一下,您尝试过悬停卡吗?可能与您想做的类似

http://designwithpc.com/Plugins/Hovercard

于 2012-11-19T09:50:32.453 回答
1

jquery ui 提供了对话框功能

它背后的想法是你有你的锚绑定它显示和隐藏你的弹出窗口

$('#anchor').bind({
    'mouseenter' : function() {
        $('#popUp').show();
    },
    'mouseleave' : function() {
        $('#popUp').hide();
    }
});

您必须将弹出窗口的位置设置为。请注意,只有当弹出 div 显示不是 none 时,您才能使用$('#popup').outerWidth()/2$('#anchor').outerWidth() /2 ...

于 2012-11-19T09:52:21.567 回答