この記事では、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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQL 高可用性クラスタの展開とフェイルオーバーの実装
HTML のフォームを使用して、ユーザーからさまざまな種類の入力情報を収集できます。フォームは、実際...
注意: 他のマシン (IP) は、承認なしではクライアント経由で MySQL データベースに接続でき...
序文最近、MySQL 5.7 をインストールしましたが、問題が見つかりました。コマンド ライン ウィ...
属性チェック-厳密公式ドキュメントでは、チェックボックスが表示されるときに親項目と子項目を互いに関連...
1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...
機能: データ表示、テーブルアプリケーションシナリオ。 <table> テーブル<...
実装要件ElementUI を模倣したフォームは、インデックス コンポーネント、Form フォーム ...
目次概要機能性と読みやすさ空白括弧セミコロンインデント身元大文字と小文字を区別予約キーワード概要すべ...
序文Nodejs はサーバーサイド言語です。開発中、登録やログインなどでは、判断のためにフォームを通...
背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...
各ブラウザの select タグのプロパティと各ブラウザのサポートが多少異なるため、各ブラウザでの選...
前回述べた問題を解決するために、オンラインで検索したところ、非常に優れたビジュアル インターフェース...
目次1. RabbitMqの動作環境を構築する1.検索を通じてrabbitmqイメージを照会する2....
目次1. オペレーター1.1 算術演算子1.2 インクリメント演算子とデクリメント演算子1.3 比較...
まずサンプルコードを見てみましょう: 1. 共通パラメータ tcpdump -i eth0 -nn ...