整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript 如何拖拽元素?

          例: 限制范圍的拖拽

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          .box{
          width: 800px;
          height: 400px;
          margin: 50px auto;
          border: 1px solid #f00;
          /*讓拖拽元素根據它進行定位*/
          position: relative;
          }
          .move{
          width: 200px;
          height: 120px;
          cursor: move;
          background-color: orange;
          /*定位屬性*/
          position: absolute;
          left: 100px;
          top: 50px;
          }
          </style>
          </head>
          <body>
          <div class="box">
          <div class="move"></div>
          </div>
          
          <script type="text/javascript">
              //獲取box盒子
              var box = document.querySelector(".box");
              //獲取拖拽的盒子
              var move = document.querySelector(".move");
              //求得box盒子距離body的凈位置
              var boxLeft = box.getBoundingClientRect().left;
              var boxTop = box.getBoundingClientRect().top;
              //拖拽三大事件
              move.onmousedown = function(e){
              var ev = e || window.event;//事件對象兼容
              //存儲鼠標按下時到事件源的位置
              var startX = ev.offsetX;
              var startY = ev.offsetY;
          
          
              document.onmousemove = function(e){
              var ev = e || window.event;//事件對象兼容
              //真實的拖拽元素的left和top值
              var left = ev.clientX -boxLeft - startX;
              var top = ev.clientY - boxTop - startY;
              //多拖拽盒子的left和top值進行約束
              if(left<0){
              left = 0;//left最小是0
              }else if(left>(box.offsetWidth-move.offsetWidth)){
              left = box.offsetWidth-move.offsetWidth;//left最大是大盒子寬度-小盒子寬度
              }
              if(top<0){
              top = 0;//top最小是0
              }else if(top>(box.offsetHeight-move.offsetHeight)){
              top = box.offsetHeight-move.offsetHeight;//top最大是大盒子高度-小盒子高度
              }
          
          
              //設置拖拽元素的left和top屬性值
              move.style.left = left + "px"
              move.style.top = top + "px"
              }
              document.onmouseup = function(){
              document.onmousemove = null;
              document.onmouseup = null;
              }
              }
          </script>
          </body>
          </html>

          實例: 進一步優化(帶吸附拖拽)

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
          margin: 0;
          padding: 0;
          }
          .box{
          width: 800px;
          height: 400px;
          margin: 50px auto;
          border: 1px solid #f00;
          /*讓拖拽元素根據它進行定位*/
          position: relative;
          }
          .move{
          width: 200px;
          height: 120px;
          cursor: move;
          background-color: orange;
          /*定位屬性*/
          position: absolute;
          left: 100px;
          top: 50px;
          }
          </style>
          </head>
          <body>
          <div class="box">
          <div class="move"></div>
          </div>
          
          <script type="text/javascript">
              //獲取box盒子
              var box = document.querySelector(".box");
              //獲取拖拽的盒子
              var move = document.querySelector(".move");
              //求得box盒子距離body的凈位置
              var boxLeft = box.getBoundingClientRect().left;
              var boxTop = box.getBoundingClientRect().top;
              //拖拽三大事件
              move.onmousedown = function(e){
              var ev = e || window.event;//事件對象兼容
              //存儲鼠標按下時到事件源的位置
              var startX = ev.offsetX;
              var startY = ev.offsetY;
          
          
              document.onmousemove = function(e){
              var ev = e || window.event;//事件對象兼容
              //真實的拖拽元素的left和top值
              var left = ev.clientX -boxLeft - startX;
              var top = ev.clientY - boxTop - startY;
              //彈性吸附 就是讓他還差**px時我就讓他到邊邊上
              if(left<20){
              left = 0;//left最小是0
              }else if(left>(box.offsetWidth-move.offsetWidth-20)){
              left = box.offsetWidth-move.offsetWidth;//left最大是大盒子寬度-小盒子寬度
              }
              if(top<20){
              top = 0;//top最小是0
              }else if(top>(box.offsetHeight-move.offsetHeight-20)){
              top = box.offsetHeight-move.offsetHeight;//top最大是大盒子高度-小盒子高度
              }
          
          
              //設置拖拽元素的left和top屬性值
              move.style.left = left + "px"
              move.style.top = top + "px"
              }
              document.onmouseup = function(){
              document.onmousemove = null;
              document.onmouseup = null;
              }
              }
          </script>
          </body>
          </html>

          實例: 進一步優化(帶影子拖拽)

          家好,今天給大家介紹一款,css3實現的鼠標懸停特效,鼠標懸停給圖片加邊框html頁面前端源碼(圖1)。送給大家哦,獲取方式在本文末尾。

          圖1

          鼠標放在圖像上,圖像后面的邊框就會上浮包住圖像(圖2)

          圖2

          源碼完整,需要的朋友可以下載學習(圖3)

          圖3

          本源碼編碼:10191,需要的朋友,訪問下面鏈接后,搜索10191,即可獲取。

          「鏈接」

          家好,今天給大家介紹一款,css實現的懸停菜單鼠標跟隨圖片顯示交互特效html頁面前端源碼(圖1),布局合理。送給大家哦,獲取方式在本文末尾。

          圖1

          菜單切換的時候,鼠標會跟隨顯示不同的圖片,非常炫酷(圖2)

          圖2

          源碼完整,需要的朋友可以下載學習(圖3)

          圖3

          本源碼編碼:10206,需要的朋友,訪問下面鏈接后,搜索10206,即可獲取。

          「鏈接」


          主站蜘蛛池模板: 蜜臀Av午夜一区二区三区| 精品一区二区AV天堂| 精品久久一区二区三区| 无码精品人妻一区二区三区AV| 国产成人精品一区二区三在线观看| 日本视频一区二区三区| 日本免费一区二区在线观看| 日本一区二区在线不卡| 竹菊影视欧美日韩一区二区三区四区五区 | 91在线一区二区| 国偷自产视频一区二区久| 亚洲狠狠久久综合一区77777| 国产精品亚洲专一区二区三区| 青青青国产精品一区二区| 中文字幕久久久久一区| 蜜桃视频一区二区三区| 国产一区在线播放| 国产视频一区二区| 国产视频一区二区在线观看| 天码av无码一区二区三区四区| 精产国品一区二区三产区| 无码国产精品一区二区免费虚拟VR| 蜜桃臀无码内射一区二区三区| 日本一区二区三区在线网| 一区二区中文字幕| 美女啪啪一区二区三区| 国模吧一区二区三区| 国产精品日本一区二区不卡视频 | 国产精品久久久久一区二区三区| 日韩国产精品无码一区二区三区| 久久人妻内射无码一区三区| 一区二区三区亚洲| tom影院亚洲国产一区二区| 国模私拍福利一区二区| 亚洲欧美日韩中文字幕一区二区三区 | 无码人妻aⅴ一区二区三区有奶水| 波多野结衣AV一区二区三区中文| 在线视频精品一区| 高清一区高清二区视频| 99精品国产高清一区二区三区| 国产精品视频一区二区三区无码|