<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      原生js實現div的拖拽與拉伸

       

      原生js實現元素的拖拽和拉伸,需要清楚一下幾個要素:

      網頁可見區域寬: document.body.clientWidth

      網頁可見區域高: document.body.clientHeight

      網頁可見區域寬: document.body.offsetWidth (包括邊線的寬)

      網頁可見區域高: document.body.offsetHeight (包括邊線的高)

      網頁正文全文寬: document.body.scrollWidth

      網頁正文全文高: document.body.scrollHeight

      網頁被卷去的高: document.body.scrollTop

      網頁被卷去的左: document.body.scrollLeft

       

      對應的dom元素的寬高有以下幾個常用的:

      元素的實際高度:document.getElementById("div").offsetHeight

      元素的實際寬度:document.getElementById("div").offsetWidth

      元素的實際距離左邊界的距離:document.getElementById("div").offsetLeft

      元素的實際距離上邊界的距離:document.getElementById("div").offsetTop

      需要用到的幾個鼠標事件:

      mousedown——onmousemove ——onmouseup 分別是鼠標點擊目標事件、鼠標在頁面移動事件、鼠標離開目標事件

       

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
        <meta charset="UTF-8">
        <title>js實現拖拽和拉伸</title>
      </head>
      
      <body>
        <div id="test" style="position:absolute;left:0;top:210PX;width:400px;height:400px; border:1px solid #adadad;"></div>
        <div class="test" style="position:absolute;left:0px;top:0px;width:200px;height:200px; border:1px solid #adadad;"></div>
        <div class="test" style="position:absolute;left:210px;top:0px;width:200px;height:200px; border:1px solid #adadad;"></div>
        <div class="test" style="position:absolute;left:420px;top:0px;width:200px;height:200px; border:1px solid #adadad;"></div>
        <script>
          let arr=document.getElementsByClassName('test')
          for(var i=0;i<arr.length;i++){
            let test=arr[i]
            test.addEventListener('mousedown',e=>{
            var mouseDownX = e.clientX;
            var mouseDownY = e.clientY;
            var clickBoxLeft = test.offsetLeft;
            var clickBoxTop = test.offsetTop;
            var clickBoxWeight = test.offsetWidth;
            var clickBoxHeight = test.offsetHeight;
      
            var direction = 0;
            if (mouseDownX < clickBoxLeft + 30) {
              direction = 'left';
            } else if (mouseDownX > clickBoxLeft + clickBoxWeight - 30) {
              direction = 'right';
            }
      
            if (mouseDownY < clickBoxTop + 30) {
              direction = 'top';
            } else if (direction < clickBoxTop + clickBoxHeight - 30) {
              direction = 'bottom';
            }
            if ((clickBoxLeft + clickBoxWeight - 30) < mouseDownX && mouseDownX < (clickBoxLeft + clickBoxWeight) && (clickBoxTop + clickBoxHeight - 30) < mouseDownY && mouseDownY < (clickBoxTop + clickBoxHeight)) {
              direction = 'rightBottomCorner';
            } else if ((clickBoxLeft + 30) < mouseDownX && mouseDownX < (clickBoxLeft + clickBoxWeight - 30) && (clickBoxTop + 30) < mouseDownY && mouseDownY < (clickBoxTop + clickBoxHeight - 30)) {     //如果是在中間位置,則實現拖動功能
              direction = "drag";
            }
      
            document.onmousemove = function (e) {
              var xx = e.clientX;
              var yy = e.clientY;
              if (direction === 'left') {
                test.style.width = clickBoxWeight + mouseDownX - xx + 'px'
                test.style.left = xx + 'px';
              } else if (direction === 'right') {
                test.style.width = clickBoxWeight + xx - mouseDownX + 'px'
              }
      
              if (direction === 'top') {
                test.style.height = clickBoxHeight + mouseDownY - yy + 'px';
                test.style.top = yy + 'px';
              } else if (direction === 'bottom') {
                test.style.height = clickBoxHeight + yy - mouseDownY + 'px';
              }
              if (direction === 'rightBottomCorner') {
                test.style.width = clickBoxWeight + xx - mouseDownX + 'px'
                test.style.left = clickBoxLeft + 'px';
                test.style.height = clickBoxHeight + yy - mouseDownY + 'px';
                test.style.top = clickBoxTop + 'px';
              } else if (direction === "drag") {
                test.style.left = xx - mouseDownX + clickBoxLeft + 'px';
                test.style.top = yy - mouseDownY + clickBoxTop + 'px';
              }
              //return false; //這里為了避免抖動
            };
            document.onmouseup = function () {
              document.onmousemove = null;
              document.onmouseup = null;
            };
            if (e.preventDefault) {
              e.preventDefault();
            }
            })
          }
      
          var clickBox = document.getElementById('test');
          /**
           *desc:當在當前元素上按下鼠標時,就觸發拖動和拉伸操作
           */
          clickBox.onmousedown =(e)=> {
            console.log(clickBox)
            var mouseDownX = e.clientX;
            var mouseDownY = e.clientY;
            var clickBoxLeft = clickBox.offsetLeft;
            var clickBoxTop = clickBox.offsetTop;
            var clickBoxWeight = clickBox.offsetWidth;
            var clickBoxHeight = clickBox.offsetHeight;
      
            var direction = 0;
            if (mouseDownX < clickBoxLeft + 30) {
              direction = 'left';
            } else if (mouseDownX > clickBoxLeft + clickBoxWeight - 30) {
              direction = 'right';
            }
      
            if (mouseDownY < clickBoxTop + 30) {
              direction = 'top';
            } else if (direction < clickBoxTop + clickBoxHeight - 30) {
              direction = 'bottom';
            }
            if ((clickBoxLeft + clickBoxWeight - 30) < mouseDownX && mouseDownX < (clickBoxLeft + clickBoxWeight) && (clickBoxTop + clickBoxHeight - 30) < mouseDownY && mouseDownY < (clickBoxTop + clickBoxHeight)) {
              direction = 'rightBottomCorner';
            } else if ((clickBoxLeft + 30) < mouseDownX && mouseDownX < (clickBoxLeft + clickBoxWeight - 30) && (clickBoxTop + 30) < mouseDownY && mouseDownY < (clickBoxTop + clickBoxHeight - 30)) {     //如果是在中間位置,則實現拖動功能
              direction = "drag";
            }
      
            /**
             *desc:當鼠標開始華東的時候,根據鼠標的移動方向去調整他的X,Y坐標和長寬
             */
            document.onmousemove = function (e) {
              e = e || event; //是要是使用原生js給我們提供的e回調參數,這存儲了很多有用的信息
              var xx = e.clientX;
              var yy = e.clientY;
              if (direction === 'left') {
                clickBox.style.width = clickBoxWeight + mouseDownX - xx + 'px'
                clickBox.style.left = xx + 'px';
              } else if (direction === 'right') {
                clickBox.style.width = clickBoxWeight + xx - mouseDownX + 'px'
              }
      
              if (direction === 'top') {
                clickBox.style.height = clickBoxHeight + mouseDownY - yy + 'px';
                clickBox.style.top = yy + 'px';
              } else if (direction === 'bottom') {
                clickBox.style.height = clickBoxHeight + yy - mouseDownY + 'px';
              }
              if (direction === 'rightBottomCorner') {
                clickBox.style.width = clickBoxWeight + xx - mouseDownX + 'px'
                clickBox.style.left = clickBoxLeft + 'px';
                clickBox.style.height = clickBoxHeight + yy - mouseDownY + 'px';
                clickBox.style.top = clickBoxTop + 'px';
              } else if (direction === "drag") {
                clickBox.style.left = xx - mouseDownX + clickBoxLeft + 'px';
                clickBox.style.top = yy - mouseDownY + clickBoxTop + 'px';
              }
              //return false; //這里為了避免抖動
            };
            document.onmouseup = function () {
              document.onmousemove = null;
              document.onmouseup = null;
            };
            if (e.preventDefault) {
              e.preventDefault();
            }
          };
          // /**
          //  *desc:在拉伸的過程中,實現居中狀態長存,有時間將其做成一個插件公布出來,供大家使用
          //  */
      
        </script>
      </body>
      </html>
      

        

      以上是參考https://blog.csdn.net/m0_37631322/article/details/89973554  的對于單獨元素和多個元素的拖拽事件

      posted @ 2020-10-21 16:55  輕染  閱讀(3164)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产乱妇乱子视频在播放| 日本va欧美va精品发布| 亚洲男人AV天堂午夜在| 成人免费无码大片a毛片| 综合亚洲网| 男人狂桶女人出白浆免费视频| 亚洲人成网站在线播放2019| 蜜芽久久人人超碰爱香蕉| 互助| 亚洲精品无码你懂的| 亚洲欧美人成电影在线观看| 龙川县| 超清无码一区二区三区| 久久精品国产亚洲av电影| 国产午夜福利在线视频| 国产精品人一区二区三区| 天天做天天爱夜夜爽女人爽| 偷拍专区一区二区三区| 热99久久这里只有精品| 人妻聚色窝窝人体WWW一区| 久久国产精品老人性| 最近中文字幕国产精品| 噜妇插内射精品| 在线播放国产精品三级网| 最近中文字幕日韩有码| 秀山| 亚洲精品久久久久国色天香| 《特殊的精油按摩》3| 国产精品午夜精品福利| 国内偷自第一区二区三区| 欧美做受视频播放| 亚洲精品成人无限看| 大地资源免费视频观看| 中文字幕乱码在线播放| 久久精产国品一二三产品 | 乌克兰丰满女人a级毛片右手影院| 欧美午夜精品久久久久久浪潮 | 国产午夜精品久久一二区| 黑人巨大精品欧美一区二区| 国产偷国产偷亚洲高清午夜| 国产精品久久蜜臀av|