拖拽相關問題

上一篇簡單地描述了拖拽效果的實現,下面修繕出現的各種用戶體驗不好的情況:

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;
    }
  }

}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • 1.CSS基本概念 1.1 CSS的定義 CSS(Cascading Style Sheets)層疊樣式表,主要用...
    寥寥十一閱讀 1,868評論 0 6
  • 1. tab列表折疊效果 html: 能源系統事業部 崗位名稱: 工作地點 崗位名...
    lilyping閱讀 1,891評論 0 1
  • 項目中需要對div進行拖拽縮放,需要有控制面板8個控制點的那種,原以為這么常見的效果應該能搜索到很多相關插件,然而...
    小蟲巨蟹閱讀 6,245評論 10 28
  • 十八歲過去了好久了 十八歲 激情由余 耐心不足
    左轉的c閱讀 176評論 0 1