中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

原生JS如何實現滑動按鈕效果

發布時間:2021-11-15 09:07:10 來源:億速云 閱讀:180 作者:小新 欄目:開發技術

小編給大家分享一下原生JS如何實現滑動按鈕效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

利用Js制作的滑動按鈕的具體代碼,供大家參考,具體內容如下

首先貼上效果圖

原生JS如何實現滑動按鈕效果

再貼上源碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div >
        <div id="container">
            <svg >
                <circle  id="c" cx="25" cy="25" r="23" 
                
                onmousedown="down(event)"
                onmouseup="up(event)"
                onmouseleave="up(event)"
               />
            </svg>
        </div>
         </div>
         <!-- <script>
             setTimeout(function () {
                let c =  document.querySelector('circle');
                console.log(c.parentNode.parentNode.style)
                 
               },500)
            
         </script> -->
  
  <style>
      body{
          margin:0;
          background-color:azure;
      }
      #container{
          position:absolute;
          left: 50%; top: 50%; 
          transform: translateX(-50%) translateY(-50%);
          width: 200px;
          height: 50px;
          background-color: black;
          border-radius: 50px;
      }
      
  </style>
  <script>
      let circle = document.getElementById('c'),
          clicked = false,
       
          x = 0,y = 0;
          
      circle.addEventListener("mousemove",function(e){
      x = e.offsetX;
      
      
      if(clicked){

          circle.setAttribute("cx",x)
      }

      
      })
      function t(e){
        circle.setAttribute("cx",e.offsetX);
      }
      function down(e){
       clicked = true;
      }
      function up(){
      if(clicked){
          let flag;
     if(x <= 100)
      new Promise(function(resolve,reject){
     flag = setInterval(function(){
          x -= 2;

          circle.setAttribute("cx",x);
          if(x <= 25){

              circle.setAttribute("cx",25)
              circle.setAttribute("style","fill:white; stroke:gray; stroke-width:2;")
              resolve("ok")
          }
      })
      }).then(res => {
        clearInterval(flag)
      })
      else 
      new Promise(function(resolve,reject){
     flag = setInterval(function(){
          x += 2;
          circle.setAttribute("cx",x);
          if(x >= 175){
              circle.setAttribute("cx",175);
              circle.setAttribute("style","fill:black; stroke:gray; stroke-width:2;")
              resolve("ok")
          }
      })
      }).then(res => {
        clearInterval(flag)
      })
      }
      clicked = false;
      
      }
     
  </script>
    
</body>
</html>

知識點和制作思路及步驟

1、基本布局(父相子絕,left: 50%; top: 50%; transform: translateX(-50%)
translateY(-50%);)

2、svg的circle( cx )控制移動, 對于circle的cx采用setAtrribute來進行控制。

3、**Promise.then()**用來保證結束后進行clearInterval

4、circle監聽了mousemove,mouseup,mousedown事件。 當mousedown事件觸發會將cliked置為true進而move事件會進行reset;

5、mouseupmouseleave會將cliked置為false;進而無法觸發move事件的reset(停止);

6、當停止狀態下,判斷原點在左側還是右側, 動畫: 如果在左半部分則利用setInterval進行10ms一幀每次1.5px的移動,判斷到達開始或者結束點則停止。

7、再進行樣式切換。

代碼本人全部原創,請盡情抄襲,代碼寫完沒有經過整理,可能存在無效變量,僅僅代表我的思路。

以上是“原生JS如何實現滑動按鈕效果”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

泰兴市| 淅川县| 孝感市| 新和县| 道真| 南充市| 乐业县| 株洲市| 平顺县| 江达县| 康平县| 防城港市| 东城区| 汤阴县| 布拖县| 高碑店市| 龙山县| 铜梁县| 陇川县| 安宁市| 灵武市| 子长县| 定州市| 万荣县| 巍山| 广宗县| 定边县| 罗江县| 邓州市| 衡山县| 明星| 桐梓县| 北票市| 南投市| 濮阳市| 嘉荫县| 宁城县| 长垣县| 岚皋县| 蓬莱市| 南召县|