ホームページ  >  記事  >  ウェブフロントエンド  >  ネイティブjsは自動カルーセルチャートを実装します

ネイティブjsは自動カルーセルチャートを実装します

小云云
小云云オリジナル
2018-03-22 17:05:534195ブラウズ


カルーセル画像は、現在、Web サイトのページで最も一般的なエフェクトの 1 つで、淘宝網、JD.com などの多くの Web サイトで使用されています。いくつかの自動タブも必要ですが、再現性が高くなります。ここで共有し、js ネイティブ コードを使用してカルーセル画像の一般的な効果を実現してください。

カルーセル画像の原理

同じサイズの一連の画像がタイル状に並べられ、CSS レイアウトを使用して 1 つの画像のみを表示し、残りの画像を非表示にします。タイマーを使用してオフセットを計算して自動再生を実現します。


Html レイアウト

まず、親コンテナのバナーにはすべてのコンテンツが格納され、子コンテナの img-list には画像が格納されます。サブコンテナリストにはボタンドットが格納されます。ドットの背景画像を使用しました!

<p id="banner">
    <ul id="img-list">  
       
        <li><img src="images/banner1.png" alt="1"/></li>
        <li><img src="images/banner2.jpg" alt="2"/></li>
        <li><img src="images/banner3.png" alt="3"/></li>

    </ul>
    <p id="list">
        <span index="1" class="on"></span>
        <span index="2"></span>
        <span index="3"></span>
    </p>
</p>
CSS の変更

1. ボックス モデル、ドキュメント フロー、および絶対配置の問題を理解します。

2. 画像の幅と高さは固定です。まず、img-list で 3 つの画像の合計幅を設定し、overflow: hidden;! で余分な部分を隠します。右の画像の下にある li 設定をロードしてフローティングします。

3. リストスパンの幅と高さを修正し、背景画像を与えます。最初の画像にデフォルトの黄色のドット画像を設定します。

#banner {
    width:100%;
    padding:0;
    clear: both;
    position: relative;
    height: 400px;
    z-index:1;
}

#img-list {
    display: block;
    width:5760px;
    height: 400px;
    overflow: hidden;
    z-index:1;
    position: relative;
}
#img-list li{
    float: left;
    width:100%;
    height: 400px;
    overflow: hidden;
    /* position: absolute;
    top:0;
    left:0; */
    z-index: 2;
}
#list {
    width:100%;
    height:18px;
    text-align: center;
    position: absolute;
    bottom: 10px;
    z-index: 100;
}
#list > span {
    width:18px;
    height: 18px;
    overflow: hidden;
    display: inline-block;
    margin:0 2px;
    background: url(../images/yuan.png);
    cursor: pointer;
}
#list .on {
    background: url(../images/huanyu.png);
}
JS エフェクト

1. まず、自動再生機能を設定します

2. 次に、マウスがコンテナ上をスライドすると再生が停止し、マウスがコンテナ全体から離れると次の画像まで再生を続けます。

3. 自動再生関数を定義して呼び出します

var banner=document.getElementById(&#39;banner&#39;);
  var imglist=document.getElementById(&#39;img-list&#39;).getElementsByTagName("li");
  var list=document.getElementById(&#39;list&#39;).getElementsByTagName(&#39;span&#39;);
var index=0;
  var timer=null;
 //设置自动播放函数
  function autoPlay () {
      if (++index >= imglist.length) {index = 0};
      changeImg(index);
  }

  // 鼠标划过整个容器时停止自动播放
  banner.onmouseover = function () {
      clearInterval(timer);
  }

  // 鼠标离开整个容器时继续播放至下一张
  banner.onmouseout=function(){
      timer=setInterval(autoPlay,2000);
  }
  / 定义并调用自动播放函数
  timer = setInterval(autoPlay, 2000);

次に、画像の切り替え関数を定義します

// 定义图片切换函数
  function changeImg (curIndex) {
      for (var i = 0; i < imglist.length; i++) {

          imglist[i].style.display = "none";
          list[i].className = "";
      }
      imglist[curIndex].style.display = "block";
      list[curIndex].className = "on";
  }

最後に、すべてのデジタルナビゲーションを走査して、対応する画像へのスワイプ切り替えを実現し、そのインデックス値を取得する必要があります

for (var i = 0; i < list.length; i++) {
  list[i].index=i;
 list[i].onmouseover = function () {
 clearInterval(timer);
 changeImg(this.index);
 };

カルーセルのコードはすべて完成しました。

関連する推奨事項:

WeChat アプレット カルーセル チャート関数の開発例

jquery は PC 側のカルーセル チャート コードを実装します

カルーセル チャートを実装する 2 つの JS 方法

以上がネイティブjsは自動カルーセルチャートを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。