スライドボタン効果を実現するネイティブJS

スライドボタン効果を実現するネイティブJS

Jsで作ったスライドボタンの具体的なコードは参考までに。具体的な内容は以下のとおりです

まずエフェクト画像を貼り付けます

ソースコードをもう一度貼り付けます

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
</head>
<本文>

    <div スタイル="位置: 相対;幅: 100vw;高さ: 100vh">
        <div id="コンテナ">
            <svg スタイル="幅:継承;高さ:継承">
                <circle id="c" cx="25" cy="25" r="23" style="fill:white;stroke:gray;stroke-width:2;"
                
                onmousedown="ダウン(イベント)"
                onmouseup="up(イベント)"
                onmouseleave="up(イベント)"
               />
            </svg>
        </div>
         </div>
         <!-- <スクリプト>
             setTimeout(関数() {
                c = document.querySelector('circle');
                コンソールログ(c.parentNode.parentNode.style)
                 
               },500)
            
         </script> -->
  
  <スタイル>
      体{
          マージン:0;
          背景色:紺碧;
      }
      #容器{
          位置:絶対;
          左: 50%; 上: 50%; 
          変換: translateX(-50%) translateY(-50%);
          幅: 200ピクセル;
          高さ: 50px;
          背景色: 黒;
          境界線の半径: 50px;
      }
      
  </スタイル>
  <スクリプト>
      円を document.getElementById('c') とします。
          クリック = false、
       
          x=0、y=0;
          
      円.addEventListener("mousemove",関数(e){
      x = e.offsetX;
      
      
      if(クリック){

          円.setAttribute("cx",x)
      }

      
      })
      関数t(e){
        円に属性を設定します("cx",e.offsetX);
      }
      関数ダウン(e){
       クリック = true;
      }
      関数 up(){
      if(クリック){
          フラグを立てます。
     x <= 100の場合
      新しいPromise(function(resolve,reject){
     フラグ = setInterval(関数(){
          x = 2;

          円に属性を設定します。
          x <= 25の場合{

              円.setAttribute("cx",25)
              円.setAttribute("style","塗りつぶし:白; ストローク:グレー; ストローク幅:2;")
              解決("OK")
          }
      })
      }).then(res => {
        clearInterval(フラグ)
      })
      それ以外 
      新しいPromise(function(resolve,reject){
     フラグ = setInterval(関数(){
          x + = 2;
          円に属性を設定します("cx",x);
          x >= 175の場合{
              円に属性を設定します("cx",175);
              円.setAttribute("style","塗りつぶし:黒; ストローク:グレー; ストローク幅:2;")
              解決("OK")
          }
      })
      }).then(res => {
        clearInterval(フラグ)
      })
      }
      クリック = false;
      
      }
     
  </スクリプト>
    
</本文>
</html>

知識ポイント、制作アイデア、手順

1. 基本レイアウト(親と子、左:50%、上:50%、変換:translateX(-50%)
Y座標を-50%で変換します。

2. svg の円 (cx) が動きを制御し、円の cx は setAtrrivute によって制御されます

3. **Promise.then()** は完了後に clearInterval を保証するために使用されます

4.circle は、mousemove、mouseup、mousedownイベントをリッスンします。 mousedown イベントがトリガーされると、clicked が true に設定され、move イベントがリセットされます。

5. mouseupmouseleave はclicked を false に設定し、移動イベントのリセット (停止) をトリガーできなくなります。

6. 停止状態の場合、原点が左側にあるか右側にあるかを判断します。アニメーション: 左半分にある場合は、setInterval を使用して、フレームごとに 10 ミリ秒ごとに 1.5 ピクセルずつ移動し、開始点または終了点に到達したら停止します。

7. 次にスタイルを切り替えます。

すべてのコードは私が作成したオリジナルですので、ご自由にコピーしてください。コードは整理されておらず、無効な変数が含まれている可能性があります。これらは私のアイデアを表しているだけです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • カプセル化されたリストを右にスライドしてお気に入りボタンを削除する JS を実装する方法
  • JSをベースに、モバイル端末で左にスライドすると削除ボタン機能が表示される
  • js は、QQ で連絡先を左にスライドして削除ボタンをスライドアウトする操作を模倣します。
  • jsはボタンの表示スタイルを変更することでボタンのスライド効果を実現します

<<:  フレックスレイアウトにおけるflex-growとflex-shrinkの計算方法の詳しい説明

>>:  サイトマップをウェブページの下部に配置するメリットと例

推薦する

DD DT DLタグの使用例

通常は <ul><li> タグを使用しますが、dd タグと dt タグも便利...

Vueは単一ファイルコンポーネントの完全なプロセス記録を実装します

目次序文単一ファイルコンポーネント基本概念シンプルなローダーコンポーネントコンテンツの解析コンポーネ...

JavaScript 関数構文の説明

目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...

Ubuntu 18.04 は pyenv、pyenv-virtualenv、virtualenv、Numpy、SciPy、Pillow、Matplotlib をインストールします

1. 現在、Pythonのバージョン管理ツールは数多く存在します。その中でも比較的使いやすいのがPy...

画像の半透明処理 画像と半透明の背景の実装のアイデアとコード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

SQL Server の完全バックアップに関する珍しいエラーと解決策

1. エラーの詳細一度、データベース全体のバックアップを手動で実行したときに、次のエラーが発生しまし...

MIME エンコーディングの概要 (オンライン情報と実際の経験から統合)

1. MIME: 多目的インターネットメール拡張インペリアル カレッジ オブ コンピュータ オンラ...

シンプルなタブバー切り替えコンテンツバーを実装するJavaScript

この記事では、タブバーの切り替えコンテンツバーを簡単に実現するためのJavaScriptの具体的なコ...

CSS の歪んだ影の実装コード

この記事では、CSS ワープ シャドウの実装コードを紹介し、皆さんと共有します。詳細は以下の通りです...

ページ切り替え効果を実現するJSコード

この記事の例では、ページ切り替え効果を実現するためのJSコードの具体的なコードを参考までに共有してい...

Docker ファイルの保存パス、ポート マッピング操作モードの変更

コンテナの起動コマンドを取得する方法コンテナはすでに作成されていますが、その起動パラメータ(データが...

Zabbixで監視する必要があるホストを追加するための詳細な手順

監視ホストの追加ホスト 192.168.179.104 が zabbix 監視項目に追加されます (...

CSS で 3 列レイアウトを実装するいくつかの方法と利点と欠点

序文3 列レイアウトは、その名前が示すように、両側が固定され、中央が適応します。実際の開発では、3 ...

MySQL ビューの原理と基本操作例

この記事では、例を使用して、MySQL ビューの原理と基本操作を説明します。ご参考までに、詳細は以下...

MySQL例外に対する一般的な解決策をいくつか分析する

目次序文1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致して...