美文网首页
拖拽相关问题

拖拽相关问题

作者: fragments222 | 来源:发表于2018-01-02 20:48 被阅读0次

上一篇简单地描述了拖拽效果的实现,下面修缮出现的各种用户体验不好的情况:

1.cursor: move -- 被拖拽的元素出现移动标志
2.被拖拽的元素一定要设置:position:absolute
3.溢出窗口
4.拖拽时将滚动条隐藏
5.低版本火狐,当被拖拽的元素无内容时会出现不可用的bug
 //跨浏览器获取窗口大小
var pageWidth = window.innerWidth;
var pageHeight = window.innerHeight;
if(typeof pageWidth != 'number'){
     if(document.compatMode == 'CSS1Compat'){
        pageWidth = document.documentElement.clientWidth;
        pageHeight = document.documentElement.clientHeight;
      }else{
        pageWidth = document.body.clientWidth;
        pageHeight = document.body.clientHeight;
      }
 }
pox.onmousedown = function(e){
    var e = e || window.event;
    preDef(e);  //低版本火狐,当被拖拽的块是空白时出现bug

    document.documentElement.style.overflow = 'hidden'; //此举作用是:当拖拽时滚动条隐藏
    var diffX = e.clientX - pox.offsetLeft;
    var diffY = e.clientY - pox.offsetTop;
    document.onmousemove = function(e){
        var e = e || window.event;
        var lefts = e.clientX - diffX;
            var tops = e.clientY - diffY;
        if(lefts<0){
            lefts = 0;
        }else if(lefts > pageWidth - pox.offsetWidth){
            lefts = pageWidth - pox.offsetWidth;
        }
                    
        if(tops<0){
            tops = 0;
        }else if(tops > pageHeight - pox.offsetHeight){
            tops = pageHeight - pox.offsetHeight;
        }

        pox.style.left = lefts + 'px';
        pox.style.top = tops + 'px';
        }
        document.onmouseup = function(){
            document.onmousemove = null;
            document.onmouseup = null;
         }
}
//阻止默认行为
function preDef(e){
        var e = e || window.event;
    if(typeof e.preventDefault != 'undefined' ){
        e.preventDefault();
    }else {
        e.returnValue = false;
    }
  }

}

相关文章

  • 拖拽相关问题

    上一篇简单地描述了拖拽效果的实现,下面修缮出现的各种用户体验不好的情况: 1.cursor: move -- 被拖...

  • 拖拽api相关问题

    在父级元素内有多个子元素时,拖动子元素1,经过子元素2,3时会触发dragleave enter事件 当只想监听l...

  • 前端拖拽后端数据处理

    前端拖拽后端数据处理 问题来源 前端开发做表格展现的时候,遇到需要拖拽变更数据顺序的问题,前端使用拖拽功能或者其他...

  • 可拖拽GridView代码解析

    分为三步来说明拖拽是怎么实现的。 1)如何让拖拽的Item来随着手指的移动而移动。 2)拖拽过程中相关item的移...

  • 一分钟搞定前端拖拽效果

    最近项目中有功能涉及到拖拽效果,使用vuedraggable组件中遇到的问题及方法做了相关的记录,与大家分享。 一...

  • React 实现组件拖拽功能

    ##实现React组件的拖拽功能 HTML5原生支持拖拽功能,没有看过相关文档,恰好自己想实现一下React组件...

  • RecyclerView 拖拽item后顺序错乱

    问题描述 recyclerview实现(2行4列)拖拽图标能调整顺序。同一行图标拖拽后保存无异常,不同行图标拖拽切...

  • 【ReactNative错误集锦】ListView无法拖拽滑动

    问题:ListView无法拖拽滑动 详细过程: 根节点使用ListView后,正常拖拽滑动 非根节点使用ListV...

  • 事件高级(二)

    事件高级(二) 可重用的选项卡实例 限制范围的拖拽实例 磁性吸附的拖拽实例 解决拖拽问题一:选中文字 事件捕获:s...

  • 实现一个美化原生拖拽的draggable-polyfill

    拖拽的实现 在HTML5还未普及之前,实现元素的拖拽还算是一件比较麻烦的事,大概思路就是监听鼠标移动相关事件,下面...

网友评论

      本文标题:拖拽相关问题

      本文链接:https://www.haomeiwen.com/subject/umiqnxtx.html