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

JS+DIV實(shí)現(xiàn)拖動(dòng)效果

 更新時(shí)間:2020年02月11日 08:16:22   作者:geekzsp  
這篇文章主要為大家詳細(xì)介紹了JS+DIV實(shí)現(xiàn)拖動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JS+DIV實(shí)現(xiàn)拖動(dòng)效果的具體代碼,供大家參考,具體內(nèi)容如下

效果圖

思路

代碼

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="main" style="background-color: aqua;width: 100px;height: 100px;position: absolute;left: 50px;top: 50px">
  <div id="title" style="height: 10px;width:100%;background-color: antiquewhite;position: absolute;left: 0px;top: 0px"></div>
  <div class="box"></div>
</div>
<script>

  var startx;
  var starty;
  var startLeft;
  var startTop;
  var titleDiv=document.getElementById("title");
  var mainDiv=document.getElementById("main");
  var isDown=false;
//  鼠標(biāo)按下
  function movedown(e){
    e=e?e:window.event;
    isDown=true;
    startx=e.clientX;
    starty=e.clientY;
    startLeft=parseInt(mainDiv.style.left);
    startTop=parseInt(mainDiv.style.top);
  }
//  鼠標(biāo)移動(dòng)
  function move(e){
    e=e?e:window.event;
    if(isDown) {
      mainDiv.style.left = e.clientX - (startx - startLeft)+"px";
      mainDiv.style.top = e.clientY - (starty - startTop)+"px";
    }
  }
//  鼠標(biāo)松開
  function moveup(){
    isDown=false;
  }
  titleDiv.οnmοusedοwn=movedown;
  titleDiv.οnmοusemοve=move;
  titleDiv.οnmοuseup=moveup;
</script>
</body>
</html>

優(yōu)化(封裝,以及解決拖動(dòng)問題(事件捕獲))

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="main" style="background-color: aqua;width: 100px;height: 100px;position: absolute;left: 50px;top: 50px">
  <div id="title"
     style="height: 10px;width:100%;background-color: antiquewhite;position: absolute;left: 0px;top: 0px"></div>
  <div class="box"></div>
</div>
<script>


  function Mover(title) {
    this.obj = title;
    this.startx = 0;
    this.starty;
    this.startLeft;
    this.startTop;
    this.mainDiv = title.parentNode;
    var that = this;
    this.isDown = false;
    this.movedown = function (e) {
      e = e ? e : window.event;
      if (!window.captureEvents) {
        this.setCapture();
      } //事件捕獲僅支持ie
//      函數(shù)功能:該函數(shù)在屬于當(dāng)前線程的指定窗口里設(shè)置鼠標(biāo)捕獲。一旦窗口捕獲了鼠標(biāo),
//      所有鼠標(biāo)輸入都針對(duì)該窗口,無論光標(biāo)是否在窗口的邊界內(nèi)。同一時(shí)刻只能有一個(gè)窗口捕獲鼠標(biāo)。
//      如果鼠標(biāo)光標(biāo)在另一個(gè)線程創(chuàng)建的窗口上,只有當(dāng)鼠標(biāo)鍵按下時(shí)系統(tǒng)才將鼠標(biāo)輸入指向指定的窗口。
//      非ie瀏覽器 需要在document上設(shè)置事件
      that.isDown = true;
      that.startx = e.clientX;
      that.starty = e.clientY;

      that.startLeft = parseInt(that.mainDiv.style.left);
      that.startTop = parseInt(that.mainDiv.style.top);
    }
    this.move = function (e) {
      e = e ? e : window.event;
      if (that.isDown) {
        that.mainDiv.style.left = e.clientX - (that.startx - that.startLeft) + "px";
        that.mainDiv.style.top = e.clientY - (that.starty - that.startTop) + "px";
      }
    }
    this.moveup = function () {
      that.isDown = false;
      if (!window.captureEvents) {
        this.releaseCapture();
      } //事件捕獲僅支持ie
    }
    this.obj.onmousedown = this.movedown;
    this.obj.onmousemove = this.move;
    this.obj.onmouseup = this.moveup;

    //非ie瀏覽器
    document.addEventListener("mousemove", this.move, true);
  }
  var mover = new Mover(document.getElementById("title"));


  //寫兩個(gè)是為了解決 ie 和非ie 瀏覽器關(guān)于事件捕獲 的兼容性問題


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

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

相關(guān)文章

  • JavaScript防抖案例講解

    JavaScript防抖案例講解

    這篇文章主要介紹了JavaScript防抖案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 常見的原始JS選擇器使用方法總結(jié)

    常見的原始JS選擇器使用方法總結(jié)

    常見的原始JS選擇器有g(shù)etElementById,getElementsByName,getElementsByTagName,就使用上為大家總結(jié)下
    2014-04-04
  • 認(rèn)識(shí)Knockout及如何使用Knockout綁定上下文

    認(rèn)識(shí)Knockout及如何使用Knockout綁定上下文

    Knockout簡(jiǎn)稱ko,是一個(gè)輕量級(jí)的javascript類庫,采用MVVM設(shè)計(jì)模式(即Model、view、viewModel),簡(jiǎn)單優(yōu)雅的實(shí)現(xiàn)了雙向綁定,實(shí)時(shí)更新,幫助您使用干凈的數(shù)據(jù)模型來創(chuàng)建豐富的、響應(yīng)式的用戶界面
    2015-12-12
  • Javascript異步編程模型Promise模式詳細(xì)介紹

    Javascript異步編程模型Promise模式詳細(xì)介紹

    異步模式在 Web 編程中變得越來越重要,如何處理異步請(qǐng)求后的操作是一件麻煩事。Promise 是一種異步編程模型,術(shù)語稱作 Deferred 模式,它通過一組API來規(guī)范化異步操作,讓異步操作的流程控制更加容易。
    2014-05-05
  • 原生JavaScript實(shí)現(xiàn)日歷功能代碼實(shí)例(無引用Jq)

    原生JavaScript實(shí)現(xiàn)日歷功能代碼實(shí)例(無引用Jq)

    這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)日歷功能代碼實(shí)例(無引用Jq),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 詳解使用uni-app開發(fā)微信小程序之登錄模塊

    詳解使用uni-app開發(fā)微信小程序之登錄模塊

    這篇文章主要介紹了詳解使用uni-app開發(fā)微信小程序之登錄模塊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • JavaScript+Canvas實(shí)現(xiàn)簡(jiǎn)單的柱狀圖

    JavaScript+Canvas實(shí)現(xiàn)簡(jiǎn)單的柱狀圖

    這篇文章主要為大家詳細(xì)介紹了JavaScript如何利用Canvas實(shí)現(xiàn)繪制簡(jiǎn)單的柱狀圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Typescript中使用引用路徑別名報(bào)錯(cuò)的解決方法

    Typescript中使用引用路徑別名報(bào)錯(cuò)的解決方法

    本文主要介紹了Typescript中使用引用路徑別名報(bào)錯(cuò)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • undefined與null的區(qū)別示例詳解

    undefined與null的區(qū)別示例詳解

    這篇文章主要為大家介紹了undefined與null的區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • js 顯示base64編碼的二進(jìn)制流網(wǎng)頁圖片

    js 顯示base64編碼的二進(jìn)制流網(wǎng)頁圖片

    base64簡(jiǎn)單地說,它把一些 8-bit 數(shù)據(jù)翻譯成標(biāo)準(zhǔn) ASCII 字符,我們把圖像文件的內(nèi)容直接寫在了HTML 文件中,這樣做的好處是,節(jié)省了一個(gè)HTTP 請(qǐng)求
    2014-04-04

最新評(píng)論