亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

js面向?qū)ο蠓绞綄崿F(xiàn)拖拽效果

 更新時間:2021年03月03日 06:36:29   作者:web前端的清流  
這篇文章主要為大家詳細介紹了js面向?qū)ο蠓绞綄崿F(xiàn)拖拽效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了js面向?qū)ο蠓绞綄崿F(xiàn)拖拽的具體代碼,供大家參考,具體內(nèi)容如下

拖拽功能的實現(xiàn)原理:(直接拿走?。?/p>

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    #box {
      position: absolute;
      left: 100px;
      top: 100px;
      width: 100px;
      height: 100px;
      background: red;
    }

    #box2 {
      position: absolute;
      left: 200px;
      top: 200px;
      width: 100px;
      height: 100px;
      background: green;
    }
  </style>
</head>

<body>
  <div id="box">文字</div>
  <div id="box2">文字</div>
</body>
<script>
  class Drag {
    startMouse = {};
    startEl = {};
    #el = null;
    constructor(el, option) {
      this.#el = el;
      this.option = option;
      this.start();
    }
    start() {
      let move = (e) => {
        this.move(e)
      }
      this.#el.addEventListener('mousedown', (e) => {
        this.startMouse = {
          x: e.clientX,
          y: e.clientY,
        }
        this.ondragstart && this.ondragstart(e)
        this.startEl = this.getOffset();
        document.addEventListener('mousemove', move);
        document.addEventListener('mouseup', (e) => {
          document.removeEventListener('mousemove', move);
          this.end(e);
        }, {
          once: true
        })
        e.preventDefault();

      })
    }
    move(e) {
      let nowMouse = {
        x: e.clientX,
        y: e.clientY,
      }
      let disMouse = {
        x: nowMouse.x - this.startMouse.x,
        y: nowMouse.y - this.startMouse.y
      }
      this.ondrag && this.ondrag(e)
      this.setOffset(disMouse)
    }
    end(e) {
      this.ondragend && this.ondragend(e)
    }
    getOffset() {
      return {
        x: parseFloat(getComputedStyle(this.#el)["left"]),
        y: parseFloat(getComputedStyle(this.#el)["top"])
      }
    }
    setOffset(dis) {
      this.#el.style.left = this.startEl.x + dis.x + 'px'
      this.#el.style.top = this.startEl.y + dis.y + 'px'
    }
  }
  let box = document.querySelector("#box");
  let box2 = document.querySelector("#box2");
  let d = new Drag(box);
  let d2 = new Drag(box2);
  let clonex = null;
  d2.ondragstart = (e) => {
    clonex = box2.cloneNode(true);
    document.body.appendChild(clonex)
    box2.style.opacity = 0.5
  }
  d2.ondragend = () => {
    document.body.removeChild(clonex);
    box2.style.opacity = 1
  }
</script>

</html>

最終效果(拖動的為綠色塊)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JavaScript?DOM?API的使用教程及綜合案例

    JavaScript?DOM?API的使用教程及綜合案例

    dom是Document Object Model的縮寫,即文檔對象模型,是基于文檔編程的一套API接口,下面這篇文章主要給大家介紹了關于JavaScript?DOM?API的使用教程及綜合案例的相關資料,需要的朋友可以參考下
    2023-03-03
  • 關于layui時間回顯問題的解決方法

    關于layui時間回顯問題的解決方法

    今天小編就為大家分享一篇關于layui時間回顯問題的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript Length 屬性的總結(jié)

    JavaScript Length 屬性的總結(jié)

    javascript length屬性是返回字符串的字符數(shù)目,length可以返回function的參數(shù)數(shù)目。接下來,通過本篇文章給大家介紹javascript length屬性,對javascript length屬性感興趣的朋友可以參考下本篇文章
    2015-11-11
  • javascript創(chuàng)建createXmlHttpRequest對象示例代碼

    javascript創(chuàng)建createXmlHttpRequest對象示例代碼

    這篇文章主要介紹了javascript創(chuàng)建createXmlHttpRequest對象的示例代碼。需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • JS中使用正則表達式g模式和非g模式的區(qū)別

    JS中使用正則表達式g模式和非g模式的區(qū)別

    這篇文章給大家詳細介紹了JS中使用正則表達式g模式和非g模式的區(qū)別,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-04-04
  • js監(jiān)聽鍵盤事件示例代碼

    js監(jiān)聽鍵盤事件示例代碼

    本文為大家詳細介紹下使用js如何監(jiān)聽鍵盤事件,具體實現(xiàn)代碼如下,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-07-07
  • jQuery 表單驗證插件formValidation實現(xiàn)個性化錯誤提示

    jQuery 表單驗證插件formValidation實現(xiàn)個性化錯誤提示

    這里介紹另外一個表單驗證插件formValidation,這個插件與前面兩個插件的最大區(qū)別在于它實現(xiàn)了個性化的錯誤提示信息,顯示在表單元素右上角類似于提示條
    2009-06-06
  • js判斷手機和pc端選擇不同執(zhí)行事件的方法

    js判斷手機和pc端選擇不同執(zhí)行事件的方法

    這篇文章主要介紹了js判斷手機和pc端選擇不同執(zhí)行事件的方法,可實現(xiàn)判斷手機端還是PC端再選擇對應的執(zhí)行事件的功能,是非常實用的技巧,需要的朋友可以參考下
    2015-01-01
  • 純Javascript實現(xiàn)ping功能的方法

    純Javascript實現(xiàn)ping功能的方法

    這篇文章主要介紹了純Javascript實現(xiàn)ping功能的方法,實例分析了javascript實現(xiàn)ping功能的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 使用JS代碼實現(xiàn)俄羅斯方塊游戲

    使用JS代碼實現(xiàn)俄羅斯方塊游戲

    這篇文章主要介紹了使用JS代碼實現(xiàn)俄羅斯方塊游戲,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08

最新評論