ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery と CSS を使用して画像カルーセル効果を実装する方法の簡単な例

jQuery と CSS を使用して画像カルーセル効果を実装する方法の簡単な例

黄舟
黄舟オリジナル
2017-08-13 10:14:221894ブラウズ

この記事では、簡単な画像カルーセル効果を実現するための jquery+css を主に紹介します。興味のある方は参考にしてください。

開発プロセス中に画像カルーセル プラグインを使用する必要があります。いくつかのプラグインを使用した後、比較的シンプルな機能を備えたプラグインを自分でコーディングすることにしました。

追記:

この機能は比較的単純です。ここで使用されている画像は 1170*500 です。別のサイズの画像に変更する必要があります。それを自分で画像リストの幅の下に置きます。

.pic-list の幅はバナー全体の幅です。回転する必要がある画像が多数ある場合、.pic-list の幅は

html の数値 * 単一の幅より大きくする必要があります。


<p class="banner">
    <!--第一张图片为最后一张,用来做轮播连接使用,所以一开始显示的第一章,应是第二张图片,这里图片的宽度为1170px,所以一开始left为-1170px,同理最后一张图也为第一张图。-->
  <p class="pic-list" style="left: -1170px">
    <img src="/static/img/4.jpg" alt="">
    <img src="/static/img/1.jpg" alt="">
    <img src="/static/img/2.jpg" alt="">
    <img src="/static/img/3.jpg" alt="">
    <img src="/static/img/4.jpg" alt="">
    <img src="/static/img/1.jpg" alt="">
  </p>
  <p id="buttons">
    <!-- 确保span的数量跟img数量一样多,不包括第一张img和最后一张img-->
    <span class=&#39;on&#39;></span>
    <span></span>
    <span></span>
    <span></span>
  </p>
  <a href="javascript:;" class="arrow" id="prev"><</a>
  <a href="javascript:;" class="arrow" id="next">></a>
</p>

css


.banner{
  width: 100%;
  height: 500px;
  overflow: hidden;
  position: relative;

}
.banner a{
  text-decoration: none;
}
.banner .pic-list{
  width: 10000px;
  height: 500px;
  position: absolute;
  z-index: 1;
}
.banner .pic-list img{
  width: 1170px;
  float: left;
}
#buttons{
  position: absolute;
  z-index: 2;
  height: 10px;
  bottom: 20px;
  left: 550px;

}
#buttons span{
  cursor: pointer;
  float: left;
  border: 1px solid #fff;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #333;
  margin-right: 5px;
}
#buttons .on{
  background: orange;
}
.arrow{
  cursor: pointer;
  line-height: 36px;
  text-align: center;
  font-size: 20px;
  font-weight: bold;
  width: 40px;
  height: 40px;
  position: absolute;
  z-index: 2;
  top: 200px;
  background: rgba(0,0,0,0.5);
  color: #fff;
  display: none;
}
.banner:hover .arrow{display: block;}

#prev{
  left: 20px;
}
#next{
  right:20px;
}

js


$(document).ready(function(){
  var picNum = 4;//图片数量,根据实际修改
  var picWidth = 1170;//图片的宽度,根据实际修改
  var picMaxWidth = -1 * picNum * picWidth;
  var currentPic = 1;
  var next = $(&#39;#next&#39;);
  var prev = $(&#39;#prev&#39;);
  var flag = false;

  prev.on(&#39;click&#39;,function(){
    if(!flag){
      calPx(1170);
      currentPic--;
      if (currentPic < 1) {
        currentPic = picNum;
      }
      $(&#39;#buttons span&#39;).eq(currentPic-1).addClass(&#39;on&#39;).siblings().removeClass(&#39;on&#39;);
    }
  });

  next.on(&#39;click&#39;,function(){
    if(!flag){
      calPx(-1170);
      currentPic++;
      if (currentPic > picNum) {
        currentPic = 1;
      }
      $(&#39;#buttons span&#39;).eq(currentPic-1).addClass(&#39;on&#39;).siblings().removeClass(&#39;on&#39;);
    }


  });
  $(&#39;.banner&#39;).on(&#39;mouseover&#39;,function(){
    stop();
  }).on(&#39;mouseout&#39;,function(){
    play();
  })
  function nextClick(){
    next.click();
  }
  function play(){
    setInt = setInterval(nextClick,2000);
  }
  function stop(){
    clearInterval(setInt);
  }

  function calPx(leftPx){
    flag = true;
    var left = parseInt($(&#39;.pic-list&#39;).css(&#39;left&#39;));
    var newLeft = left+leftPx;
    var time = 300;
    var interval = 10;
    var speed = leftPx/(time/interval);

    function go(){
      var left = parseInt($(&#39;.pic-list&#39;).css(&#39;left&#39;));
      if((speed < 0 && left > newLeft) || (speed > 0 && left < newLeft)){
        $(&#39;.pic-list&#39;).css(&#39;left&#39;, (left + speed) + &#39;px&#39;);
        setTimeout(go,interval);
      }else{
        flag = false;
        if( newLeft > -1170){
          newLeft = picMaxWidth;
        }else if (newLeft < picMaxWidth ) {
          newLeft = -1170;
        }
        $(&#39;.pic-list&#39;).css(&#39;left&#39;,newLeft + &#39;px&#39;);
      }
    }
    go();

  }
  play();

});

以上がjQuery と CSS を使用して画像カルーセル効果を実装する方法の簡単な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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