鼠标悬停/点击弹出Div锚点

时间:2012-11-19 09:37:07

标签: javascript jquery html css web-applications

我是网络编程的新手。

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

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

不是使用库,任何人都可以用最简单的方式告诉我如何在不使用库的情况下完成它。我只是想知道背后的粗略想法。大多数图书馆都有复杂的代码,初学者很难学习。

非常感谢高级。

2 个答案:

答案 0 :(得分: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)

让我尽快让你有点小提琴 但另一方面,你有尝试过的hovercards吗?可能与你想做的相似

http://designwithpc.com/Plugins/Hovercard

答案 1 :(得分:1)

jquery ui提供dialog功能

背后的想法是你拥有它显示的锚点绑定并隐藏你弹出

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

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