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

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)原理:(直接拿走?。?/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>

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

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

相關(guān)文章

  • Typescript學(xué)習(xí)之接口interface舉例詳解

    Typescript學(xué)習(xí)之接口interface舉例詳解

    TypeScript是JavaScript的一個(gè)超集,主要提供了類型系統(tǒng)和對(duì)ES6+的支持,TypeScript的核心原則之一是對(duì)值所具有的結(jié)構(gòu)進(jìn)行類型檢查,這篇文章主要給大家介紹了關(guān)于Typescript學(xué)習(xí)之接口interface的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • PHP實(shí)現(xiàn)記錄代碼運(yùn)行時(shí)間封裝類實(shí)例教程

    PHP實(shí)現(xiàn)記錄代碼運(yùn)行時(shí)間封裝類實(shí)例教程

    這篇文章主要給大家介紹了利用PHP實(shí)現(xiàn)記錄代碼運(yùn)行時(shí)間的封裝類的相關(guān)教程,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友可以參考下
    2017-05-05
  • js實(shí)現(xiàn)前端圖片上傳即時(shí)預(yù)覽功能

    js實(shí)現(xiàn)前端圖片上傳即時(shí)預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)前端圖片即時(shí)預(yù)覽功能,本地預(yù)覽功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 詳解JavaScript的內(nèi)存空間、賦值和深淺拷貝

    詳解JavaScript的內(nèi)存空間、賦值和深淺拷貝

    這篇文章主要介紹了JavaScript的內(nèi)存空間、賦值和深淺拷貝,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 微信小程序中target和currentTarget的區(qū)別小結(jié)

    微信小程序中target和currentTarget的區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于微信小程序中target和currentTarget區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 基于JS繪制2021的煙花效果 附源碼下載

    基于JS繪制2021的煙花效果 附源碼下載

    這篇文章主要介紹了基于JS繪制2021的煙花效果,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 利用layer實(shí)現(xiàn)表單完美驗(yàn)證的方法

    利用layer實(shí)現(xiàn)表單完美驗(yàn)證的方法

    今天小編就為大家分享一篇利用layer實(shí)現(xiàn)表單完美驗(yàn)證的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • jsp+javascript打造級(jí)連菜單的實(shí)例代碼

    jsp+javascript打造級(jí)連菜單的實(shí)例代碼

    jsp+javascript打造級(jí)連菜單的實(shí)例代碼,需要的朋友可以參考一下
    2013-06-06
  • javascript基礎(chǔ)進(jìn)階_深入剖析執(zhí)行環(huán)境及作用域鏈

    javascript基礎(chǔ)進(jìn)階_深入剖析執(zhí)行環(huán)境及作用域鏈

    下面小編就為大家?guī)硪黄猨avascript基礎(chǔ)進(jìn)階_深入剖析執(zhí)行環(huán)境及作用域鏈。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • JS基于for語句編寫的九九乘法表示例

    JS基于for語句編寫的九九乘法表示例

    這篇文章主要介紹了JS基于for語句編寫的九九乘法,涉及for語句循環(huán)輸出結(jié)合table表格布局實(shí)現(xiàn)九九乘法功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01

最新評(píng)論

河北省| 巴南区| 大冶市| 辉县市| 福海县| 滨州市| 陕西省| 福州市| 建湖县| 天等县| 囊谦县| 西乌珠穆沁旗| 淳化县| 白城市| 铜鼓县| 鹤山市| 青河县| 忻城县| 中卫市| 周至县| 通渭县| 临夏县| 桐庐县| 松江区| 成安县| 桑植县| 青阳县| 太谷县| 明光市| 中超| 新源县| 商河县| 南丹县| 西平县| 双城市| 万盛区| 大关县| 云和县| 青冈县| 浦县| 桓仁|