JD.com フラッシュセール効果を実現する JavaScript

JD.com フラッシュセール効果を実現する JavaScript

この記事では、JD.comのフラッシュセール効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

まず、HTML と CSS を使用してフレームワークを構築します。

* {
            マージン: 0;
            パディング: 0;
        }
        
        。箱 {
            幅: 190ピクセル;
            高さ: 270px;
            色: #fff;
            テキスト配置: 中央;
            マージン: 100px 自動;
            背景色: #d00;
            パディング上部: 40px;
            ボックスのサイズ: 境界線ボックス;
        }
        
        .box>h3 {
            フォントサイズ: 26px;
        }
        
        .box>p:n番目の型(1) {
            色: rgba(255, 255, 255, .5);
            上マージン: 5px;
        }
        
        .box>i {
            表示: インラインブロック;
            上マージン: 5px;
            下部マージン: 5px;
            フォントサイズ: 40px;
        }
        
        .box>.time {
            ディスプレイ: フレックス;
            コンテンツの中央揃え: 中央;
            上マージン: 10px;
        }
        
        .time>div {
            幅: 40px;
            高さ: 40px;
            背景: #333;
            行の高さ: 40px;
            テキスト配置: 中央;
            フォントの太さ: 700;
            位置: 相対的;
        }
        
        .time>div::before {
            コンテンツ: "";
            表示: ブロック;
            幅: 100%;
            高さ: 2px;
            背景: #d00;
            位置: 絶対;
            左: 0;
            上位: 50%;
            変換: translateY(-50%);
        }
        
        .時間>.分{
            マージン: 0 10px;
}
<div class="box">
        <h3>京東フラッシュセール</h3>
        <p>フラッシュセール</p>
        <i class="iconfont icon-lightningbshandian"></i>
        <p>この試合はまだ10分残っています</p>
        <div class="time">
            <div class="hour">00</div>
            <div class="minute">00</div>
            <div class="second">00</div>
        </div>
 </div> 

ロジック部分を設計してみましょう。

関連要素を取得する

2 つの時刻の差を処理す​​る関数を定義します。時間、分、秒が 10 未満の場合は、スペースを占有するために先頭に「0」を追加する必要があることに注意してください。最後に、オブジェクトの形式で返します。

動的な効果を実現するために、setInterval() を使用して、取得した時間、分、秒をすべて設定し、1 秒ごとに変更することができます。

ユーザーが開いた瞬間に効果を確認できるように、取得した時間、分、秒を関数にカプセル化し、setInterval()内外で直接関数を呼び出すことで、

//1. 操作対象となる要素を取得します。const oHour = document.querySelector(".hour");
const oMinute = document.querySelector(".minute");
const oSecond = document.querySelector(".second");
 
//2. 時間差の処理 const remDate = new Date("2021-10-28 23:59:59");
 
        日付をremDateに設定します。
 
        //タイマーを開始する setInterval(function() {
            日付をremDateに設定します。
        }, 1000);
 
        //ユーザーがアクセスするとすぐに効果を確認できるように、最初に3つの00を表示する代わりに
        // これをカプセル化できます function setTime(remDate) {
            定数obj = getDifferTime(remDate);
            // コンソールログ(obj);
 
            //3. 要素の差を設定します oHour.innerText = obj.hour;
            oMinute.innerText = obj.minute;
            oSecond.innerText = obj.second;
        }
 
        関数 getDifferTime(remDate, curDate = new Date()) {
            //1. 2つの時間の差を取得する(ミリ秒)
            const 異なる時間 = remDate - curDate;
 
            //2. 2つの時間(秒)の差を取得します
            定数differSecond = differTime / 1000;
 
            //3. 差の合計秒数 / 各日の秒数 = 差の日数を使用します。let day = Math.floor(differSecond / (60 * 60 * 24));
            day = day >= 10 ? day : "0" + day;
 
            //4. 秒数/時間の合計数を使用する % 24
            hour = Math.floor(differSecond / (60 * 60) % 24) とします。
            hour = hour >= 10 ? hour : "0" + hour;
 
            //5. 差の合計秒数/分数を使用する % 60
            分を Math.floor(differSecond / 60 % 60) とします。
            分 = 分 >= 10 ? 分 : "0" + 分;
 
            // 6. 差の合計秒数を使用します % seconds let second = Math.floor(differSecond % 60);
            second = second >= 10 ? second : "0" + second;
 
            戻る {
                日: 日、
                時間: 時間、
                分: 分、
                2番目: 2番目、
            }
        } 

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

以下もご興味があるかもしれません:
  • JavaScript が JD.com のフラッシュセールのカウントダウンを模倣
  • js は JD.com のフラッシュセールのカウントダウン機能を実現します
  • ウェブページでの自動クリックスルーを実現する JS スクリプト
  • Javascript は、製品のフラッシュセールのカウントダウンを実装します (時間はサーバー時間と同期されます)
  • JS スクリプトを使用して Web ページで自動フラッシュセール機能を実現する方法
  • PHP+JS を使用して製品フラッシュセールのカウントダウン タイマーを実装する例
  • JS はショッピングモールのフラッシュセールのカウントダウン機能を実装します (フラッシュセールの時間を動的に設定します)
  • JSは2回目のキルのカウントダウン効果を実装します

<<:  Zen Coding 簡単で素早いHTMLの書き方

>>:  MySQL 高可用性クラスタの展開とフェイルオーバーの実装

推薦する

HTML フォーム タグの使用方法を学ぶチュートリアル

HTML のフォームを使用して、ユーザーからさまざまな種類の入力情報を収集できます。フォームは、実際...

Linux の MySQL でリモート接続を承認する方法

注意: 他のマシン (IP) は、承認なしではクライアント経由で MySQL データベースに接続でき...

MySQL 5.7 をインストールした後にコマンドライン ウィンドウを開くとクラッシュする問題の解決方法

序文最近、MySQL 5.7 をインストールしましたが、問題が見つかりました。コマンド ライン ウィ...

要素のel-tree複数選択ツリー(チェックボックス)親子ノードの関連付けが関連付けられていません

属性チェック-厳密公式ドキュメントでは、チェックボックスが表示されるときに親項目と子項目を互いに関連...

CentOS7にMySQL 8.0.26をインストールする手順

1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...

HTMLテーブルの詳細な説明

機能: データ表示、テーブルアプリケーションシナリオ。 <table> テーブル<...

VueはElementUIのフォームサンプルコードを模倣する

実装要件ElementUI を模倣したフォームは、インデックス コンポーネント、Form フォーム ...

JavaScriptの構文とコード構造に関する深い理解

目次概要機能性と読みやすさ空白括弧セミコロンインデント身元大文字と小文字を区別予約キーワード概要すべ...

フォームデータを取得するための Node.js メソッドの 3 つの例

序文Nodejs はサーバーサイド言語です。開発中、登録やログインなどでは、判断のためにフォームを通...

MySQL InnoDB row_id 境界オーバーフロー検証方法の手順

背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...

すべてのブラウザとの完全な互換性を実現するために最適なプリセットを選択してください

各ブラウザの select タグのプロパティと各ブラウザのサポートが多少異なるため、各ブラウザでの選...

Docker で Portainer ビジュアル インターフェースを構築するための詳細な手順

前回述べた問題を解決するために、オンラインで検索したところ、非常に優れたビジュアル インターフェース...

DockerでRabbitMqの共通クラスタとミラークラスタを構築する詳細な操作

目次1. RabbitMqの動作環境を構築する1.検索を通じてrabbitmqイメージを照会する2....

Javascript の基礎: 演算子とフロー制御の詳細な説明

目次1. オペレーター1.1 算術演算子1.2 インクリメント演算子とデクリメント演算子1.3 比較...

Linux システムで tcpdump を使用してパケットをキャプチャする方法

まずサンプルコードを見てみましょう: 1. 共通パラメータ tcpdump -i eth0 -nn ...