Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在屏幕上获取float div位置,带或不带jQuery_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 在屏幕上获取float div位置,带或不带jQuery

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

我试图使用jQuery在div元素上实现拖动效果。此div元素通常是隐藏的,触发时会弹出

如果我没有滚动我的文档,那么下面的算法可以很好地工作。例如,当我向下滚动文档时,X像素,然后
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纯黄色;
溢出:隐藏;
}

此问题可能对您有所帮助此问题可能对您有所帮助