Javascript 在屏幕上获取float div位置,带或不带jQuery
我试图使用jQuery在div元素上实现拖动效果。此div元素通常是隐藏的,触发时会弹出 如果我没有滚动我的文档,那么下面的算法可以很好地工作。例如,当我向下滚动文档时,X像素,然后Javascript 在屏幕上获取float div位置,带或不带jQuery,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我试图使用jQuery在div元素上实现拖动效果。此div元素通常是隐藏的,触发时会弹出 如果我没有滚动我的文档,那么下面的算法可以很好地工作。例如,当我向下滚动文档时,X像素,然后newTop值以某种方式添加该偏移量,div在鼠标位置下方移动X像素 我认为这是因为window_div.offset().top返回div从文档顶部的位置,即使它是浮动的。有没有办法从屏幕顶部获取div的位置 或者还有其他解决办法吗 make_window_draggable(window_div) { va
newTop
值以某种方式添加该偏移量,div在鼠标位置下方移动X像素
我认为这是因为window_div.offset().top
返回div从文档顶部的位置,即使它是浮动的。有没有办法从屏幕顶部获取div的位置
或者还有其他解决办法吗
make_window_draggable(window_div) {
var bWindowMoveMouseDown = false;
var windowPositionLeft = 0;
var windowPositionTop = 0;
var initMousePositionLeft = 0;
var initMousePositionTop = 0;
var newMousePositionLeft = 0;
var newMousePositionTop = 0;
window_div.bind('mousedown', function(e) {
windowPositionLeft = window_div.offset().left;
windowPositionTop = window_div.offset().top;
initMousePositionLeft = e.screenX;
initMousePositionTop = e.screenY;
bWindowMoveMouseDown = true;
});
$(document).bind('mousemove',function(e) {
if(bWindowMoveMouseDown) {
newMousePositionLeft = e.screenX;
newMousePositionTop = e.screenY;
let relativeMouseLeft = newMousePositionLeft - initMousePositionLeft;
let relativeMouseTop = newMousePositionTop - initMousePositionTop;
var newLeft = windowPositionLeft + relativeMouseLeft;
var newTop = windowPositionTop + relativeMouseTop;
//check bounds
window_div.css({
left:newLeft,
top:newTop
});
}
});
window_div.bind('mouseup', function(e) {
bWindowMoveMouseDown = false;
});
}
这就是你要找的
$(窗口).on('scroll',函数(){
var scrollTop=$(窗口).scrollTop(),
elementOffset=$(“#我的元素”).offset().top,
距离=(elementOffset-scrollTop);
控制台日志(距离);
});代码>
#我的元素{
位置:绝对位置;
顶部:500px;
背景:金;
高度:50px;
宽度:50px;
}
#输出{
位置:固定;
排名:0;
右:0;
高度:200px;
宽度:200px;
边框:1px纯黄色;
溢出:隐藏;
}
这就是你要找的
$(窗口).on('scroll',函数(){
var scrollTop=$(窗口).scrollTop(),
elementOffset=$(“#我的元素”).offset().top,
距离=(elementOffset-scrollTop);
控制台日志(距离);
});代码>
#我的元素{
位置:绝对位置;
顶部:500px;
背景:金;
高度:50px;
宽度:50px;
}
#输出{
位置:固定;
排名:0;
右:0;
高度:200px;
宽度:200px;
边框:1px纯黄色;
溢出:隐藏;
}
此问题可能对您有所帮助此问题可能对您有所帮助