欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js面向?qū)ο蠓绞綄?shí)現(xiàn)拖拽效果

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

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

拖拽功能的實(shí)現(xiàn)原理:(直接拿走!)

<!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>

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

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

相關(guān)文章

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

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

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

    關(guān)于layui時(shí)間回顯問題的解決方法

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

    JavaScript Length 屬性的總結(jié)

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

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

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

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

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

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

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

    jQuery 表單驗(yàn)證插件formValidation實(shí)現(xiàn)個(gè)性化錯(cuò)誤提示

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

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

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

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

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

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

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

最新評(píng)論