カルーセルの制作方法を実現するjs

カルーセルの制作方法を実現するjs

この記事では、カルーセル画像の表示を実現するためのjsの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

効果は図の通りです

コードは次のとおりです。

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8" />
  <タイトル></タイトル>
  
  <スタイル タイプ="text/css">
   
   * {
    パディング: 0;
    マージン: 0;
   }
   。容器 {
    位置: 相対的;
    幅: 600ピクセル;
    高さ: 300px;
    マージン: 30px 自動;
    オーバーフロー: 非表示;
   }
       。左 {
     表示: なし;
     位置: 絶対;
     上位: 50%;
     左: -20px;
     変換: translateY(-50%);
     幅:50px;
     高さ: 50px;
     境界線の右上の半径: 50%;
     境界線の右下の半径: 50%;
     背景色: rgba(0,0,0,0.5);
     zインデックス: 999;
    }
    .左 i {
    表示: ブロック;
       上マージン: 10px;
    左マージン: 20px;
    幅: 30ピクセル;
    高さ: 30px;
    背景: url(img/left.png) 繰り返しなし;
    背景サイズ: 30px 30px;
    }
   。右 {
    表示: なし;
    位置: 絶対;
    上位: 50%;
    右: -20px;
    変換: translateY(-50%);
    幅:50px;
    高さ: 50px;
    左上の境界線の半径: 50%;
    左下の境界線の半径: 50%;
    背景色: rgba(0,0,0,0.5);
    zインデックス: 999;
   }
   .right i {
     表示: ブロック;
     上マージン: 10px;
     右マージン: 20px;
     幅: 30ピクセル;
     高さ: 30px;
     背景: url(img/right.png) 繰り返しなし;
     背景サイズ: 30px 30px;
    }
   
   ウル リ、オル リ {
    リストスタイル: なし;
   }
   。写真 {
    位置: 絶対;
   }
   .リスト{
    位置: 絶対;
    下: 10px;
    左: 10px;
   }
      .list li {
    フロート: 左;
    右マージン: 10px;
    幅: 10px;
    高さ: 10px;
    境界線の半径: 10px;
    背景色: rgba(0,0,0,0.5);
    カーソル: ポインタ;
   }
   .list .current {
    背景色: #fff;
   }
   .picture li {
    位置: 絶対;
    幅: 600ピクセル;
    高さ: 300px;
   }
   画像 {
    幅: 100%;
    高さ: 100%;
   }
   
  </スタイル>
 </head>
 <本文>
  <div class="コンテナ">
   <span class="left"><i></i></span>
   <span class="right"><i></i></span>
   <ul class="picture">
    <li><img src="img/1.jpg" ></li>
    <li><img src="img/2.jpg" ></li>
    <li><img src="img/3.jpg" ></li>
    <li><img src="img/4.jpg" ></li>
    <li><img src="img/5.jpg" ></li>
   </ul>
   <ol class="リスト">
   </ol>
  </div>
  <script type="text/javascript">
   var picture = document.querySelector('.picture');
   var list = document.querySelector('.list');
   var 数値 = 0;
   var 円 = 0;
   (i=0;i<picture.children.length;i++) の場合
   {   
    // 画像の位置を設定します。 picture.children[i].style.left = i*600 + 'px';
    // 順序付きリストを自動的に生成します var li = document.createElement('li');
    li.setAttribute('index',i);
    
    リストに追加される子要素は li です。
    // liにクリックイベントを追加します li.addEventListener('click',function () {
     (var i=0;i<list.children.length;i++) の場合 {
      list.children[i].className = '';
     }
     this.className = '現在の';
     var index = this.getAttribute('index');
     num = インデックス;
     円 = インデックス;
     アニメーション化(画像、インデックス*600);
    })
   }
   // 最初の子要素のクラス名を設定します。list.children[0].className = 'current';
   var left = document.querySelector('.left');
   var right = document.querySelector('.right');
   var コンテナ = document.querySelector('.container');
   // マウスがイベントコンテナから離れるように設定します。addEventListener('mouseover',function () {
    left.style.display = 'ブロック';
    right.style.display = 'ブロック';
    クリアインターバル(タイマー)
    タイマー = null;
   })
   コンテナ.addEventListener('mouseleave',関数() {
    left.style.display = 'なし';
    right.style.display = 'なし';
    タイマー = setInterval(関数() {
     右クリック();
    },1000);
   })
   
   // js アニメーション関数 function animate (obj, target, callback) {
    クリア間隔(obj.timer) 
    obj.timer = setInterval(関数() {
     var ステップ = (ターゲット - obj.offsetLeft)/10;
     ステップ = ステップ > 0 ? Math.ceil(step) : Math.floor(step);
     if(obj.offsetLeft == ターゲット) {
      タイマー間隔をクリアします。
      if (コールバック) {
       折り返し電話();
      }
     }
     obj.style.left = obj.offsetLeft + ステップ + 'px';
    },15)
   }
   
   var first = picture.children[0].cloneNode(true);
   picture.appendChild(最初の);
   picture.lastChild.style.left = (picture.children.length-1)*600 + 'px';
   // 右クリック eventright.addEventListener('click',function () {
    num ==picture.children.length-1の場合{
     画像スタイル左 = 0;
     数値 = 0;
    }
    数値++;
    アニメーション(画像、-num*600);
    円++;
    (円 == リストの子の長さ)の場合{
     円 = 0;
    }
    
    (var i = 0;i<list.children.length;i++) の場合 {
     list.children[i].className = '';
    }
    list.children[circle].className = 'current';
   })
   // 左クリックイベント left.addEventListener('click',function () {
    数値==0の場合{
     picture.style.left = -(picture.children.length-1)*600 +'px';
     num = picture.children.length-1;
    }
    数値--;
    アニメーション(画像、-num*600);
    丸  - ;
    (円<0)の場合{
     円 = リストの子の長さ-1;
    }
    
    (var i = 0;i<list.children.length;i++) の場合 {
     list.children[i].className = '';
    }
    list.children[circle].className = 'current';
   })
   
   var タイマー = setInterval(関数 () {
    // right.click() を手動で呼び出します。
   },1000);
  </スクリプト>
 </本文>
</html>

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

以下もご興味があるかもしれません:
  • カルーセルの完全なコードを実装するためのjs
  • ネイティブ js でカルーセルを実装するためのサンプル コード
  • 携帯電話のスライドスイッチカルーセル画像の例をサポートする効果を実現するためのjs
  • JS カルーセル図の実装の簡単なコード
  • js で左右のボタンをクリックして画像を再生する
  • JSは自動カルーセル効果(適応型画面幅+携帯電話タッチスクリーンスライド)を実現します
  • JSは左右のシームレスなカルーセルコードを実装します
  • html+js+css を使用してページ カルーセル効果を実現する (例の説明)
  • 無限ループカルーセル効果を実現するネイティブ js
  • jsは左から右へのスライドカルーセル効果を実現します

<<:  Linux サーバーに Python3 をインストールする 2 つの方法

>>:  MySQL 8.0.15 のインストールと設定のグラフィックチュートリアルと Linux でのパスワード変更

推薦する

CentOS7 での mysql 5.7.23 のバイナリ インストール

インターネット上のインストール情報は不均一で、落とし穴だらけです。インストールにはかなりの労力がかか...

Vue のドロップダウン ボックスのセカンダリ リンク効果を実装するためのサンプル コード

1. 成果を達成する 2. バックエンドから返されるデータ形式 「リスト」: [ { "i...

JavaScript フロー制御 (ループ)

目次1. forループ2. 二重の for ループ3. whileループ4. dowhileループ5...

操作タイムアウトがないときにMySQLサーバーがアクティブに切断される問題を解決します

MySQL サービスを使用する場合、通常の状況では、MySQL のタイムアウト設定は 8 時間 (2...

IE7 互換モードで IE8 を有効にするコード

最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...

kindとDockerを使用してローカルKubernetes環境を起動する

導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...

よく使用される Linux コマンドの完全なリスト (推奨コレクション)

目次1. システム情報2. シャットダウン(システムのシャットダウン、再起動、ログアウト) 3. フ...

Vue 円形パーセンテージ プログレスバー コンポーネントの機能の実装

必要な方はどなたでも参考にしてください。試してみて問題が見つかった場合は、メッセージを残してお知らせ...

MySQL 8.0.17 解凍版のインストールと設定方法のグラフィックチュートリアル

インストール中に遭遇した問題を記録しておきますので、皆様のお役に立てれば幸いです。 1. ダウンロー...

MySQL マルチバージョン同時実行制御 MVCC の基本原理の分析

目次1 トランザクションの同時実行で発生する問題1.1 ダーティリード1.2 繰り返し不可能な読み取...

mysql データ型変換の実装

1. 問題下図のような表があり、結果値がreference_high値より大きいデータを見つける必要...

画像内のrarファイルを隠す方法

このロゴを .rar ファイルとしてローカルに保存し、解凍して効果を確認することができます。よりシン...

Dockerコンテナの中国語言語パックの設定の問題を解決する

Dockerでdocker search centosを使用する場合docker pull dock...

Vue フロントエンド開発補助機能状態管理詳細例

目次マップ状態マップゲッターマップミューテーションマップアクション例まとめマップ状態コンポーネントが...

MySQL でファイルデータをインポートする際の 1290 エラーの解決方法

エラーシナリオcmd の mysql コマンドを使用して、学生情報テーブルにデータを追加します。デー...