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

推薦する

CSS ボックスを中央揃えするためのよく使われるいくつかの方法 (要約)

最初のもの: CSSの位置プロパティの使用 <スタイル タイプ="text/css&...

IE8 ベータ 1 には注意が必要な 2 つの領域があります

<br />関連記事: Web スキル: 複数の IE バージョンを共存させるソリューシ...

ウェブページの HTML コード: スクロールテキストの作成

このセクションでは、Web ページ内のテキストをスクロールしたり、スクロール プロパティを制御できる...

JavaScriptはフォームデータの非同期取得を実装します

この記事では、フォームデータの非同期取得を実現するためのJavaScriptの具体的なコードを例とし...

私のCSSアーキテクチャのコンセプト - それは人によって異なり、ベストなものはなく、適切なものだけがある

はじめに<br />私はフロントエンド分野でかなり長い間働いており、CSS分野でも長い間...

JavaScript関数の詳細な説明これを指す問題

目次1.関数内のこの方向1. 通常の機能2. コンストラクター3. オブジェクトメソッド4. イベン...

Win10にmysql8.0.15 winx64をインストールしてサーバーに接続する際に問題が発生しました

1. mysql-8.0.15をダウンロード、インストール、設定する1. 公式サイト (https:...

Linux FTP匿名アップロードとダウンロードが自動的に開始される問題を解決する

勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...

Win7 インストール MySQL 5.6 チュートリアル図

目次1. ダウンロード2. インストール3. my.ini ファイルを設定する(デフォルトのエンコー...

ウェブページのカラーマッチングスキルについての簡単な説明(フロントエンド開発者必読)

一般的に、Web ページの背景色は、より柔らかく、よりシンプルで、より明るく、暗いテキストとマッチし...

MySQL無料インストール版を解凍した後にパスワードが見つからない問題を解決する方法

1. mysql-8.0.21-winx64を解凍する2. 環境変数を設定し、アドレスをbinフォル...

MySQL における distinct と group by の違い

簡単に言うと、distinct は重複を削除するために使用され、group by は統計を集計するよ...

vitrualBox+ubuntu16.04 python3.6 最新チュートリアルと詳細な手順のインストール

最近ディープラーニングを学ぶためにUbuntu+Python 3.6バージョンを使う必要があるため、...

Oracle10パーティションとMySQLパーティションの違いの詳細な説明

一般的に使用される Oracle10g パーティションは、範囲 (範囲パーティション)、リスト (リ...

MySQLにインデックスを追加する方法

インデックスの簡単な紹介は次のとおりです。インデックスを追加する目的は、データベース クエリのパフォ...