ネイティブ js が携帯電話のプルダウン更新を模倣

ネイティブ js が携帯電話のプルダウン更新を模倣

この記事では、携帯電話のプルダウンリフレッシュを模倣したjsの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

では早速、レンダリングを見てみましょう。

プルダウンが 40 ピクセル未満の場合、テキストが表示されます。

プルダウンが40pxより大きい場合、テキストが表示されます

リリース時にテキストを表示する

実施原則

<div class="content">
        <div class="left"></div>
        <div class="top">
            <p id="p"></p>
            <div id="button">
            </div>
        </div>
</div>

CS: ...

<スタイル>
    * {
        マージン: 0;
        パディング: 0;
        ボックスのサイズ: 境界線ボックス;
    }
    
    。コンテンツ {
        幅: 350ピクセル;
        高さ: 600px;
        位置: 相対的;
        マージン: 0 自動;
    }
    
    .トップ{
        幅: 100%;
        高さ: 100%;
        背景色: #ccc;
        境界線: 12px 黒一色;
        境界線の半径: 10px;
        オーバーフロー: 非表示;
        上マージン: 50px;
        border-top: 35px 黒一色;
    }
    
    #ボタン {
        幅: 100%;
        高さ: 100%;
        背景色: rgb(47, 196, 47);
        位置: 相対的;
        パディング: 10px;
        border-top: 2px 赤実線;
    }
    
    #p {
        表示: インラインブロック;
        高さ: 30px;
        幅: 100%;
        テキスト配置: 中央;
        行の高さ: 30px;
        色: rgb(2, 2, 2);
        フォントサイズ: 15px;
        位置: 絶対;
        上: 40px;
        左: 0;
        表示: なし;
    }
    
    。左 {
        高さ: 10px;
        幅: 100ピクセル;
        背景色: #ccc;
        位置: 絶対;
        上: 12px;
        左: 110px;
        境界線の半径: 5px;
    }
    
    .left::after {
        表示: インラインブロック;
        コンテンツ: "";
        幅: 15px;
        高さ: 15px;
        背景色: #ccc;
        境界線の半径: 50%;
        位置: 絶対;
        左: 120px;
        上: -2px;
    }
</スタイル>

JS:

<スクリプト>
    var but = document.getElementById("buttom");
    var p = document.getElementById("p");
    var moveY = 0 // 押されたときの位置を初期化します var tops = 0; // tops を初期化します。 tops はプルダウンの距離ですbut.onmousedown = function(e) { //マウス押下イベントmoveY = e.offsetY //マウスが押されたときの Y 軸の位置を取得しますbut.onmousemove = function(e) { //マウス移動イベントp.innerHTML = "Pull down to refresh"
            p.style.display = "block"; //マウスを動かすと、テキストは「下に引いて更新」と表示されます
            tops = e.offsetY - moveY //topsのサイズは、マウスがY軸上で移動する距離から、マウスが押されたときの距離を引いたものです。if (tops < 0) {
                tops = 0 // プルアップを停止 } else if (tops > 40) {
                //tops が 40 より大きい場合、マウスを放すとすぐに更新できるというメッセージが表示されます。p.innerHTML = "放すとすぐに更新されます"
            }
            this.style.top = tops + 'px'; //要素の相対位置の top 値を tops の値と同じにします // console.log(tops)
        }
        but.onmouseup = function() { //マウスリリースイベント but.onmousemove = null //マウス移動イベントをクリアして、要素がマウスを追い続けるのを防ぎます if (tops < 40) {
                // プルダウン距離 b が 40px 未満の場合、要素は更新されずにすぐにリセットされ、プロンプト テキストは消えます this.style.top = 0;
                p.style.display = "なし"
            } それ以外 {
                // プルダウン距離が 40 ピクセルより大きい場合は、更新中であることを示すプロンプトが表示されます。p.innerHTML = "更新中..."
                setTimeout(() => { // 1.3 秒の遅延後にリセットします。これは単なるシミュレーションです。実際のプロジェクトでは、データの再要求に成功した後、tops = 0 をリセットする必要があります。
                    this.style.top = トップス;
                    p.style.display = "なし"
                }, 1300);
            }
        }
    }
</スクリプト>

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

以下もご興味があるかもしれません:
  • iscroll.js をベースにプルダウンリフレッシュとプルアップロードエフェクトを実装します。
  • シンプルなプルダウン更新機能を実現する純粋なJavaScript
  • vue.js モバイル アプリでのプルアップ読み込みとプルダウン更新
  • Vue.js は、vux のプルアップ読み込みとプルダウン更新のサンプルチュートリアルを統合します。
  • Javascript プルダウン更新のシンプルな実装
  • JSプラグインdroploadを使用して更新し、プルアップして読み込む方法の概要
  • iscroll.js が上下に引っ張って更新しても元に戻らない問題の解決方法
  • dropload.js プラグインを使用したプルダウン更新とプルアップ読み込みの詳細な説明
  • jsはモバイルページファイルのプルダウンリフレッシュ効果を模倣します
  • プルダウン更新/プルアップ読み込みプラグインを実装するためのJS+CSS

<<:  Docker イメージに基づいて Go プロジェクトをデプロイする方法と手順

>>:  Windows での mysql-5.7.28 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル

推薦する

マルチコア CPU を使用して Linux コマンドを高速化する方法 (GNU Parallel)

非常に大量のデータ(数百 GB)を計算する必要があったことはありますか?または、その内部を検索したり...

純粋なCSS3で実装されたネオンライト効果

達成される効果は次のとおりです。 マウスがボタン内に移動すると、ネオンライトのような効果が生成され、...

反応ジャンプ後にルートが変更されてもページが更新されない場合の解決策

目次質問解決質問この問題には多くの理由があるようです。私の問題は、パラメータ付きのURLを更新できな...

JavaScript でシンプルなタイマーを実装する

この記事では、参考までに簡単なタイマーを実装するためのJavaScriptの具体的なコードを紹介しま...

MySQL データベースの基礎: 基本コマンドの概要

目次1. ヘルプ情報を使用する2. データベースの作成、削除、表示3. データベースに接続する4. ...

MySQL全文インデックスを使用して検索エンジンのサンプルコードの簡易版を実現する

序文全文インデックスを使用できるのは Innodb と MyISAM ストレージ エンジンのみです ...

HTML 選択オプション デフォルトの選択方法

オプションに属性 selected = "selected" を追加すると、それ...

MySQLが間違ったインデックスを選択する理由と解決策

MySQL では、テーブルに複数のインデックスを指定できますが、ステートメントの実行時に、使用するイ...

表のセル間隔とセルパディングの違いの詳細な説明

テーブルとは何ですか?セルセルで構成されています。表では、<td> の数は、<tr...

単一/複数行テキストを含む div を垂直方向に中央揃えする N 通りの方法 (高さ不明/高さ固定)

この問題について話すとき、垂直方向の中央揃えを設定するための vertical-align 属性が ...

標準SQL更新ステートメントの3つの用途についての簡単な理解

1. 環境: MySQL-5.0.41-win32 Windows XP プロフェッショナル2. テ...

MySQL監視グループレプリケーションについて簡単に説明します

元のテキスト: https://dev.mysql.com/doc/refman/8.0/en/gr...

MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標...

ウィンドウとLinuxプロジェクトを展開する際のLinuxファイルパスに問題はありません

長い間ブログを書いていませんでした。先週、プロジェクトをテストしたところ、いくつかのバグが見つかりま...

Docker で Jenkins-2.249.3-1.1 をインストールする詳細な手順

目次1. Dockerをインストールする2. Jenkinsイメージファイルを取得する3. マウント...