最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實(shí)現(xiàn)限定區(qū)域范圍拖拉拽效果

 更新時(shí)間:2020年11月20日 14:13:41   作者:碼尚  
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)限定區(qū)域范圍拖拉拽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了js實(shí)現(xiàn)限定區(qū)域范圍拖拉拽的具體代碼,供大家參考,具體內(nèi)容如下

需要在范圍內(nèi)拖拉拽,之前看來許多資料覺得都不是特別滿足要求,今天自己寫了一個(gè),通過監(jiān)聽鼠標(biāo)按下、鼠標(biāo)抬起、鼠標(biāo)移動(dòng)事件來控制

代碼如下

<!DOCTYPE html>

<html lang="en">
 <head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>
  <style>

   #drag {

    background: aqua;
    width: 200px;
    height: 200px;
    position: absolute;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;

   }

   #parent {
    position: relative;
    background: #cde4dc;
    height: 80vh;
    overflow: hidden;

   }

  </style>
 </head>

<body>
  <section id="parent">
   <div id="drag"><div>這是一個(gè)測(cè)試</div></div>
  </section>
  <script type="text/javascript">

   //自執(zhí)行函數(shù),需要拖拽的元素需要設(shè)置position:absolute,父元素position:relative
   //有傳父親節(jié)點(diǎn)、若無則默認(rèn)body為父節(jié)點(diǎn)

   ((parent, children, mouseType) => {

    if (!children) return;
    let childrenDiv = document.querySelector(children);
    childrenDiv.style.position = 'absolute';
    let parentDiv = parent

     ? document.querySelector(parent)
     : document.querySelector('body');

    let isDown = false;

    let x,
     y,
     l,
     t = 0;

    childrenDiv.onmousedown = function (e) {

     x = e.clientX;
     y = e.clientY;

     // 獲取左部和底部的偏移量

     l = childrenDiv.offsetLeft;
     t = childrenDiv.offsetTop;
     isDown = true;
     childrenDiv.style.cursor = mouseType || 'move';

    };

    // 鼠標(biāo)移動(dòng)

    window.onmousemove = function (e) {

     if (!isDown) {

      return;

     }

     //獲取移動(dòng)后的x和y坐標(biāo)

     let nx = e.clientX;
     let ny = e.clientY;

     //獲取父元素的寬高

     let parentWidth = parentDiv.clientWidth;
     let parentHeight = parentDiv.clientHeight;

     //獲取子元素的寬高

     let childrenWidth = childrenDiv.clientWidth;
     let childrenHight = childrenDiv.clientHeight;

     // 計(jì)算移動(dòng)后的左偏移量和頂部偏移量

     let nLeft = nx - (x - l);
     let nTop = ny - (y - t);
     let nRight = nLeft + childrenWidth;
     let nBottom = nTop + childrenHight;
     nLeft = nLeft <= 0 ? 0 : nLeft; //判斷左邊距離是否越界
     nTop = nTop <= 0 ? 0 : nTop; //判斷上邊距離是否越界
     //判斷右邊距離大于父元素寬度

     if (nRight >= parentWidth) {

      nLeft = parentWidth - childrenHight;

     }

     // 判斷下邊界是否越界

     if (nBottom >= parentHeight) nTop = parentHeight - childrenHight;
     childrenDiv.style.left = nLeft + 'px';
     childrenDiv.style.top = nTop + 'px';

    };

    // 鼠標(biāo)抬起事件
    document.onmouseup = function (e) {
     //鼠標(biāo)抬起
     isDown = false;

     childrenDiv.style.cursor = 'default';

    };

   })('#parent', '#drag', 'move');

  </script>
 </body>
</html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS簡(jiǎn)單動(dòng)畫封裝淺析

    JS簡(jiǎn)單動(dòng)畫封裝淺析

    JS動(dòng)畫,實(shí)質(zhì)是對(duì)DOM樣式的改變。只要把主流瀏覽器DOM元素的屬性方法搞清楚,做JS動(dòng)畫并不算難
    2011-11-11
  • javascript頁面倒計(jì)時(shí)實(shí)例

    javascript頁面倒計(jì)時(shí)實(shí)例

    這篇文章主要介紹了javascript頁面倒計(jì)時(shí)實(shí)現(xiàn)方法,可實(shí)現(xiàn)簡(jiǎn)單的頁面倒計(jì)時(shí)及自動(dòng)提交表單功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • JS中offset和勻速動(dòng)畫詳解

    JS中offset和勻速動(dòng)畫詳解

    這篇文章主要介紹了JavaScript動(dòng)畫:offset和勻速動(dòng)畫詳解(含輪播圖的實(shí)現(xiàn)),并把實(shí)現(xiàn)代碼做了分享,有興趣的朋友參考下。
    2018-02-02
  • 詳解微信小程序工程化探索之webpack實(shí)戰(zhàn)

    詳解微信小程序工程化探索之webpack實(shí)戰(zhàn)

    這篇文章主要介紹了詳解微信小程序工程化探索之webpack實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 兼容Firefox的Javascript XSLT 處理XML文件

    兼容Firefox的Javascript XSLT 處理XML文件

    這篇文章主要介紹了兼容Firefox的Javascript XSLT 處理XML文件,需要的朋友可以參考下
    2014-12-12
  • 解決EventSource 刪除單詞的前置空格問題記錄

    解決EventSource 刪除單詞的前置空格問題記錄

    EventSource是HTML5中的一種新的API,用來實(shí)現(xiàn)服務(wù)器端向客戶端推送事件,相比于常規(guī)的輪詢方式,EventSource可以實(shí)現(xiàn)更加高效、低延遲的數(shù)據(jù)傳輸,這篇文章主要介紹了解決EventSource 刪除單詞的前置空格問題記錄,需要的朋友可以參考下
    2024-03-03
  • 從QQ網(wǎng)站中提取的純JS省市區(qū)三級(jí)聯(lián)動(dòng)菜單

    從QQ網(wǎng)站中提取的純JS省市區(qū)三級(jí)聯(lián)動(dòng)菜單

    在瀏覽網(wǎng)頁過程中發(fā)現(xiàn)QQ自己的JS省市區(qū)三級(jí)聯(lián)動(dòng)。所以研究了一下,就將其提取出來了。他的界面如下,喜歡的朋友可以學(xué)習(xí)下
    2013-12-12
  • 原生JS與jQuery編寫簡(jiǎn)單選項(xiàng)卡

    原生JS與jQuery編寫簡(jiǎn)單選項(xiàng)卡

    這篇文章主要為大家詳細(xì)介紹了原生JS與jQuery編寫簡(jiǎn)單選項(xiàng)卡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • extjs圖形繪制之餅圖實(shí)現(xiàn)方法分析

    extjs圖形繪制之餅圖實(shí)現(xiàn)方法分析

    這篇文章主要介紹了extjs圖形繪制之餅圖實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了extjs繪制餅圖的相關(guān)實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • JS實(shí)現(xiàn)的base64加密解密操作示例

    JS實(shí)現(xiàn)的base64加密解密操作示例

    這篇文章主要介紹了JS實(shí)現(xiàn)的base64加密解密操作,結(jié)合實(shí)例形式分析了基于javascript的base64加密與解密函數(shù)定義與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04

最新評(píng)論

伊宁市| 德令哈市| 儋州市| 化州市| 衢州市| 丹阳市| 民丰县| 平原县| 余庆县| 临武县| 新沂市| 株洲市| 五原县| 霍邱县| 丘北县| 阿拉善盟| 资源县| 喀什市| 泰安市| 云龙县| 垣曲县| 呼玛县| 武城县| 建瓯市| 寿光市| 龙门县| 金阳县| 剑河县| 延庆县| 天柱县| 龙陵县| 吉安市| 扎兰屯市| 清丰县| 社会| 华亭县| 蓬莱市| 康保县| 通许县| 固阳县| 云龙县|