ネイティブ 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 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル

推薦する

Raspberry Pi msmtp と mutt のインストールと設定のチュートリアル

1. muttをインストールするsudo apt-get install mutt 2. msmtp...

Vue3.0でカスタム命令を書くための簡単な手順

序文Vue には、v-if、v-bind、v-on などの豊富な組み込みディレクティブが用意されてい...

Linux システムにおける時間設定の概要

1. 時間の種類は次のように分けられます。 1. ネットワーク時間(タイムゾーンの設定、ntpサーバ...

フォームタグの Enctype 属性とその応用例の紹介

Enctype : ブラウザがデータをサーバーに送り返すときに使用するエンコーディングのタイプを指定...

Linux でタスク用のカスタム システム トレイ インジケーターを作成する

システム トレイ アイコンは、今日でも魔法のような機能です。アイコンを右クリックして目的のアクション...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

MySQL シリーズ 14 MySQL 高可用性実装

1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます...

HTML フォーマットの json のサンプルコード

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!DOCTYPE htm...

MySQL フィールドで NOT NULL を使用する必要があるのはなぜですか?

私は最近新しい会社に入社したのですが、データベース設計にいくつか小さな問題があることに気付きました。...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

Vue はフォームデータ検証のサンプルコードを実装します

el-form フォームにルールを追加します。データにルールを定義する定義されたルールをel-for...

MySQLのワークベンチ例の詳細な説明

MySQL Workbench - モデリングおよび設計ツール1. モデルは、最も効果的で高性能なデ...

MySQL でスロークエリを有効にする方法の例

序文スロー クエリ ログは、MySQL で非常に重要な機能です。MySQL のスロー クエリ ログ機...

Web2.0製品と機能の簡単な紹介

<br />Web2.0とは何ですか? Web2.0にはソーシャルネットワーク製品とその...