我的网站上有这样的东西:
$("body").on( "mousemove" , "a.refreply", function(e){ relocatePopup(e); });
当鼠标位于带有“refreply”类的某个链接的顶部时,它会显示一个 div#popup,如果鼠标移动,则弹出窗口会跟随光标。显示弹窗的部分这里没有显示,它基本上以 $('#popup').show(); 结尾
函数 relocatePopup 是:
function relocatePopup ( e, useglobal ) {
if ( useglobal == true ) {
var e = new Object;
e.pageX = global_x;
e.pageY = global_y;
}
var popup_height = parseInt( $("div#popup").css("height") ) ;
var bottom_popup = e.pageY + popup_height + 20;
var bottom_page = window.pageYOffset + window.innerHeight;
if ( bottom_popup > bottom_page ) {
$('div#popup').css("top", bottom_page - popup_height - 5 ).css("left",e.pageX+20);
}else{
$("div#popup").css("top",e.pageY+20).css("left",e.pageX+20);
}
}
基本上它获取鼠标事件的 x,y,剩下的就是计算弹出窗口的内容是否会出现在可见屏幕之外,重新计算将弹出窗口保持在页面内的位置,然后更改“顶部”和元素的“左侧”,必须绝对定位。