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

原生JavaScript實現(xiàn)拖動校驗功能

 更新時間:2020年09月29日 11:46:58   作者:Let me shine  
這篇文章主要介紹了原生JavaScript實現(xiàn)拖動校驗功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JavaScript實現(xiàn)拖動校驗的具體代碼,供大家參考,具體內(nèi)容如下

思路

1、頁面布局采用定位,背景顏色變化bg的寬度為0,其寬度會隨著滑塊的移動而移動。

頁面結構

<!--驗證-->
<div class="box">
  <!--滑塊-->
  <div class="btn"></div>
  <!--文字-->
  <p class="text">請滑動滑塊</p>
  <!--背景-->
  <div class="bg"></div>
</div>

頁面布局

/* 滑塊使用定位,背景沒有設置寬度*/
.box {
  width: 250px;
  height: 50px;
  background-color: #ccc;
  position: relative;
  margin: 0 auto;
}
.btn {
  box-sizing: border-box;
  width: 50px;
  height: 50px;
  border: 1px solid #ccc;
  color: #ccc;
  background-color: #fff;
  position: absolute;
  left: 0;
  top: 0;
  cursor: pointer;
  z-index: 4;
}
.text {
  position: absolute;
  height: 50px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  user-select: none;
}
.bg {
  width: 0;
  height: 50px;
  background-color: #25c20f;
  z-index: 3;
  position: absolute;
  top: 0;
  left: 0;
}

2、分析事件—鼠標按下,鼠標移動,鼠標松開

2.1 鼠標按下,獲取此時事件的水平距離downX;鼠標移動,獲取此時事件的水平距離e.clientX;那么鼠標移動的距離moveX = e.clientX - downX,也就是滑塊跟著移動的距離。即btn.style.left = moveX + 'px';同時bg的寬度也就是滑塊移動的距離,即bg.style.width = moveX + 'px'

2.2 滑塊拉到頭了,表示驗證成功
什么時候表示滑塊滑到頭了,也就是moveX等于box的寬度-滑塊的寬度。那么文字的改變成“驗證成功”。且滑塊停留在了最有端。無論鼠標點擊還是移動,都不會在影響了。那就是清除事件,清除按鈕的鼠標移動和鼠標按下事件btn.onmousemove = null; btn.onmousedown = null;//清除事件
此時驗證成功,設立一個標記為表示驗證成功flag=true,后續(xù)需要用到。

2.3 那么如果我們滑塊拉到一半就松開了鼠標,滑塊應該回到原始位置。但是如果已經(jīng)驗證成功了,那就不會回到原點。
鼠標松開事件觸發(fā),那么鼠標移動已經(jīng)不能影響滑塊了,那么此時需要清除移動事件btn.onmousemove = null;沒有驗證成功那就回到原點this.style.left = 0; bg.style.width = 0;

頁面動作

function selector(name) {
  return document.querySelector(name);
}
var box = selector('.box'),
  btn = selector('.btn'),
  text = selector('.text'),
  bg = selector('.bg'),
  flag = false;
// 鼠標按下,移動,松開
// 按下的距離和移動的距離差就是滑塊移動的距離
btn.onmousedown = function (e) {//按鈕按下的
  var downX = e.clientX
  btn.onmousemove = function(e){//e 事件的狀態(tài)
    var moveX = e.clientX - downX;
    if(moveX > 0) {
      this.style.left = moveX + 'px';
      bg.style.width = moveX + 'px'
      // 滑塊拉到頭了,表示驗證成功
      if (moveX >= box.offsetWidth - this.offsetWidth) {
        bg.style.zIndex = 1;// 設置bg的z-index的值是為了處理黨滑塊經(jīng)過原始值的時候,bg將文字覆蓋了。驗證成功后,有讓文字顯示出來
        text.innerText = '驗證成功';
        text.style.color = '#fff';
        flag = true;
        // 此時鼠標移動或者按下,滑塊不在跟著移動了
        btn.onmousemove = null;//
        btn.onmousedown = null;//清除事件
      }
    }
  }
}
btn.onmouseup = function () {
  btn.onmousemove = null;
  // 如果驗證成功了,那就不會回到原點
  if(flag){
    return ;
  }
  this.style.left = 0;
  bg.style.width = 0;
}

完整可以運行的源碼

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    /* 滑塊使用定位,背景沒有設置寬度*/
    .box {
      width: 250px;
      height: 50px;
      background-color: #ccc;
      position: relative;
      margin: 0 auto;
    }
    .btn {
      box-sizing: border-box;
      width: 50px;
      height: 50px;
      border: 1px solid #ccc;
      color: #ccc;
      background-color: #fff;
      position: absolute;
      left: 0;
      top: 0;
      cursor: pointer;
      z-index: 4;
    }
    .text {
      position: absolute;
      height: 50px;
      left: 50%;
      transform: translateX(-50%);
      z-index: 2;
      user-select: none;
    }
    .bg {
      width: 0;
      height: 50px;
      background-color: #25c20f;
      z-index: 3;
      position: absolute;
      top: 0;
      left: 0;
    }
  </style>
</head>
<body>

<!--驗證-->
<div class="box">
  <!--滑塊-->
  <div class="btn"></div>
  <!--文字-->
  <p class="text">請滑動滑塊</p>
  <!--背景-->
  <div class="bg"></div>
</div>

<script>
  function selector(name) {
    return document.querySelector(name);
  }
  var box = selector('.box'),
    btn = selector('.btn'),
    text = selector('.text'),
    bg = selector('.bg'),
    flag = false;
  // 鼠標按下,移動,松開
  // 按下的距離和移動的距離差就是滑塊移動的距離
  btn.onmousedown = function (e) {//按鈕按下的
    var downX = e.clientX
    btn.onmousemove = function(e){//e 事件的狀態(tài)
      var moveX = e.clientX - downX;
      if(moveX > 0) {
        this.style.left = moveX + 'px';
        bg.style.width = moveX + 'px'
        // 滑塊拉到頭了,表示驗證成功
        if (moveX >= box.offsetWidth - this.offsetWidth) {
          bg.style.zIndex = 1;// 設置bg的z-index的值是為了處理黨滑塊經(jīng)過原始值的時候,bg將文字覆蓋了。驗證成功后,有讓文字顯示出來
          text.innerText = '驗證成功';
          text.style.color = '#fff';
          flag = true;
          // 此時鼠標移動或者按下,滑塊不在跟著移動了
          btn.onmousemove = null;//
          btn.onmousedown = null;//清除事件
        }
      }
    }
  }
  btn.onmouseup = function () {
    btn.onmousemove = null;
    // 如果驗證成功了,那就不會回到原點
    if(flag){
      return ;
    }
    this.style.left = 0;
    bg.style.width = 0;
  }
</script>
</body>
</html>

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

相關文章

  • 微信小程序引入模塊中wxml、wxss、js的方法示例

    微信小程序引入模塊中wxml、wxss、js的方法示例

    這篇文章主要介紹了微信小程序引入模塊中wxml、wxss、js的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • JS自定義選項卡函數(shù)及用法實例分析

    JS自定義選項卡函數(shù)及用法實例分析

    這篇文章主要介紹了JS自定義選項卡函數(shù)及用法,以實例形式較為詳細的分析了javascript自定義tab切換函數(shù)及使用方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • js 判斷上傳文件大小及格式代碼

    js 判斷上傳文件大小及格式代碼

    用js對上傳的文件大小以及格式進行初步的判斷,在服務端再進行一次判斷(防止瀏覽器拒絕執(zhí)行腳本文件)下面有個不錯的方法大家可以參考下
    2013-11-11
  • 輕量級JS Cookie插件js-cookie的使用方法

    輕量級JS Cookie插件js-cookie的使用方法

    js-cookie插件是一個JS操作cookie的插件,源文件只有3.34 KB,非常輕量級,js-cookie也支持npm和Bower安裝和管理,下面看看js-cookie的具體用法
    2018-03-03
  • js編寫貪吃蛇的小游戲

    js編寫貪吃蛇的小游戲

    本文為大家介紹的是使用JS寫的貪吃蛇游戲,個人練習之用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望對大家學習js有所幫助
    2015-12-12
  • js獲取元素到可視區(qū)的距離、瀏覽器窗口滾動距離及元素距離瀏覽器頂部距離

    js獲取元素到可視區(qū)的距離、瀏覽器窗口滾動距離及元素距離瀏覽器頂部距離

    這篇文章主要給大家介紹了關于js獲取元素到可視區(qū)的距離、瀏覽器窗口滾動距離及元素距離瀏覽器頂部距離的相關資料,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • 微信小程序?qū)崿F(xiàn)點擊頁面出現(xiàn)文字

    微信小程序?qū)崿F(xiàn)點擊頁面出現(xiàn)文字

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)點擊頁面出現(xiàn)文字,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JS中Iframe之間傳值及子頁面與父頁面應用

    JS中Iframe之間傳值及子頁面與父頁面應用

    用iframe做系統(tǒng)框架,相信很多朋友都有這樣的經(jīng)歷吧,接下來將為你詳細介紹下JS中Iframe之間傳值應用,感興趣的你可以參考下哈,希望可以幫助到你
    2013-03-03
  • JS畫布動態(tài)實現(xiàn)黑客帝國背景效果

    JS畫布動態(tài)實現(xiàn)黑客帝國背景效果

    這篇文章主要為大家詳細介紹了JS畫布動態(tài)實現(xiàn)黑客帝國背景效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 詳解關于webpack多入口熱加載很慢的原因

    詳解關于webpack多入口熱加載很慢的原因

    這篇文章主要介紹了詳解關于webpack多入口熱加載很慢的原因,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04

最新評論

连城县| 昭觉县| 西乡县| 永寿县| 论坛| 黎川县| 旌德县| 加查县| 抚松县| 石门县| 堆龙德庆县| 承德县| 礼泉县| 林芝县| 芦溪县| 广丰县| 宜丰县| 新化县| 济宁市| 泰顺县| 墨脱县| 罗源县| 额济纳旗| 廊坊市| 漾濞| 贵定县| 岳西县| 太仓市| 高阳县| 梁山县| 五原县| 沁水县| 南丹县| 娄底市| 汝阳县| 通化县| 玉屏| 日照市| 桂东县| 城步| 南京市|