JSはタイムラインの自動再生を実現する

JSはタイムラインの自動再生を実現する

最近、次のような効果を実装しました。再生ボタンをクリックするとタイムラインの再生が開始され、一時停止をクリックすると現在の位置で停止し、もう一度再生をクリックすると現在の位置から再生が続行されます。対応する年をクリックして切り替えることもできます。再生は自動的に一時停止します。もう一度再生をクリックすると、現在の位置から開始されます。

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8" />
  <タイトル></タイトル>
  <link rel="スタイルシート" type="text/css" href="fonts/iconfont.css" />
  <スタイルスコープ>
   ウル、
   李、
   html,
   体 {
    マージン: 0;
    パディング: 0;
   }
 
   #タイムライン {
    リストスタイル: なし;
    テキスト配置: 中央;
    背景: url('img/xuanduan.png') 9px 上繰り返しy;
   }
 
   #タイムライン li {
    背景画像: url('img/tuoyuan1.png');
    背景繰り返し: 繰り返しなし;
    背景位置: 0 15px;
    背景サイズ: 20px 20px;
    左パディング: 30px;
    高さ: 50px;
    行の高さ: 50px;
    色: #444;
    幅: 70ピクセル;
   }
 
   #タイムラインリップ{
    幅: 70ピクセル;
    カーソル: ポインタ;
    マージン: 0;
   }
 
   .biaoqian {
    背景: url('img/biaoqian.png') 2px 13px 繰り返しなし;
    ;
    背景サイズ: 60px 24px;
    色: #fff;
   }
 
   #タイムライン .selected {
    背景: url('img/tuoyuan2.png') 0 15px 繰り返しなし;
    背景サイズ: 20px 20px;
   }
 
   .スクロールシェル{
    幅: 100ピクセル;
    高さ: 96%;
    上マージン: 1.5%;
    左マージン: 20px;
    フロート: 左;
    オーバーフロー: 非表示;
   }
 
   .スクロール{
    幅: 118ピクセル;
    高さ: 103%;
    オーバーフロー:自動;
    オーバーフロー-x:非表示;
   }
  </スタイル>
 </head>
 <本文>
  <div class="scroll-shell">
   <ul style="" id="タイムライン" ref="タイムライン" @click="タイムライン($event)" class="スクロール">
 
   </ul>
   <i class="iconfont icon-bofang" id="bofangzanting" style="font-size: 38px;position: absolute;left: 25px;top: 91%;"></i>
  </div>
  <スクリプト>
   年を[2016、2017、2018、2019、2020、2021、2022]とします
   インデックスを0にする
   タイマーを null にする
   //時間軸に対応するliを作成する
   年.map(k => {
    createLi = document.createElement('li') を作成します。
    createP = document.createElement('p') とします。
    作成P.innerHTML = k
    Li を作成します。子を追加します (P を作成します)。
    タイムラインに子要素を追加します。
   })
   //デフォルトでは最初のものが選択されます var lis = document.querySelectorAll('#timeline li')
   lis[0].classList.add('選択済み')
   var ps = document.querySelectorAll('#タイムラインリップ')
   ps[0].classList.add('表裏')
 
   //クリックイベント。クリックすると対応するエフェクトに切り替わります。var ulElement = document.querySelector('#timeline')
   ulElement.onclick = 関数(e) {
    var lis = document.querySelectorAll('#timeline li')
    var ps = document.querySelectorAll('#タイムラインリップ')
    イベントをeとします || window.event
    ターゲットをevent.target || event.srcElementとします
    ターゲットタグ名 == 'P' の場合 {  
     クラス変更(ps, lis, ターゲット)
     (i = 0 とします; i < lis.length; i++) {
      console.log(lis[i].getAttribute('class'))
      if (lis[i].getAttribute('class') == 'selected') {
       // 再生ボタンをクリックしたときに再生を続行できるように、この時点でクリックされたインデックスを記憶します。index = i
       コンソール.log(インデックス)
       壊す;
      }
 
     }
    }
   }
   
   // 共通部分、すべてのスタイルをクリアし、クリック関数に対応するクラス名を追加します classChange(ps, lis, target) {
    ps.forEach(k => {
     k.classList.remove('biaoqian')
    })
    target.classList.add('biaoqian')
    lis.forEach(v => {
     v.classList.remove('選択済み')
    })
    target.parentNode.classList.add('選択済み')
   }
 
   //再生ボタンと一時停止ボタン let bofangzanting = document.getElementById('bofangzanting')
   if (bofangzanting) {
    bofangzanting.onclick = () => {
     if (bofangzanting.className.indexOf('bofang') != -1) {
      console.log('クリックして再生')
      console.log(タイマー)
      bofangzanting.classList.remove('icon-bofang')
      bofangzanting.classList.add('アイコンザンティング')
      if (タイマー == 未定義) {
       自動再生()
      }
     } それ以外 {
      console.log('クリックして一時停止')
      bofangzanting.classList.remove('icon-zanting')
      bofangzanting.classList.add('icon-bofang')
      if (タイマー) {
       タイマー = clearInterval(タイマー)
      } それ以外 {
       戻る
      }
     }
    }
   }
 
   //自動再生関数 autoPlay() {
    var lis = document.querySelectorAll('#timeline li')
    var ps = document.querySelectorAll('#タイムラインリップ')
    タイマー = setInterval(() => {
     console.log('自動再生!')
     (インデックス<ps.length-1)の場合{
       //次のclassChange(ps, lis, ps[index + 1])を実行します
      インデックス++
     } それ以外 {
       // 先頭にジャンプ index = 0                
      クラス変更(ps, lis, ps[インデックス])
     }
     コンソール.log(インデックス)
    }, 1000)
   }
  </スクリプト>
 </本文>
</html>

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

以下もご興味があるかもしれません:
  • JSはオーディオが特定の時点で再生されることを指定します

<<:  MySQLデッドロック問題の詳細な分析

>>:  MySQL の if 関数の正しい使い方の詳細な説明

推薦する

HTML でよく使われるタグの概要 (必読)

コンテンツ詳細タグ: <h1>~<h6>タイトルタグ<pre>テ...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

Windows システムに MySQL を素早くインストールして展開する方法 (グリーンの無料インストール バージョン)

まずは緑色の無料インストール版のMySQLをダウンロードします。任意のフォルダに入れて構いません。今...

マインスイーパゲームを実装するための jQuery プラグイン (2)

この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する2番目の記事を参考までに...

MySQLとOracleの違いのまとめ(機能性能の比較、選択、使用時のSQLなど)

1. 同時実行性同時実行性は OLTP データベースの最も重要な機能ですが、同時実行性にはリソース...

W3C チュートリアル (14): W3C RDF および OWL アクティビティ

RDF と OWL は、2 つの重要なセマンティック ウェブ テクノロジーです。 RDF と OWL...

Linuxでのcrontabの使い方と注意点の詳しい説明

Crontab は定期的な実行を設定するために使用されるコマンドです。そのデーモン プロセスは cr...

Windows 10 での mysql-8.0.17-winx64 のインストール方法

1.公式サイトからダウンロードして解凍する参考: ダウンロード後、zip 圧縮ファイル (mysql...

MySql バッチ挿入の最適化 SQL 実行効率の例の詳細な説明

MySql バッチ挿入の最適化 SQL 実行効率の例の詳細な説明itemcontractprice ...

JS オブジェクト配列の重複排除のための 3 つの方法の例と比較

目次1. 重複排除前後のデータの比較2. 使い方1. フィルターとマップを使用する2. 削減を使用す...

Windows での MySQL の使用: 自動スケジュールバックアップの実装

1. バックアップスクリプトを書く 著者:www.yumi-info.com 日付:20171222...

Windows 環境での MySQL の解凍、インストール、バックアップ、復元

システム環境はserver2012です1. MySQLの解凍バージョンをダウンロードし、インストール...

MySQL 8.0 の新機能: ハッシュ結合

MySQL 開発チームは、2019 年 10 月 14 日に MySQL 8.0.18 GA バージ...

フォームファイル選択ボックスのスタイルをカスタマイズする例

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...