網頁圖片輪播

Posted by:

|

On:

|

前言

圖片輪播應該是網頁上蠻常見的圖片顯示方式,在面對很多張圖片需要顯示的時候,輪播確實是個很好用的方法。

在實作上有好幾種方法,有些並沒有使用成功,在這邊做一個紀錄。

目錄

1. CSS 動態播放
2. 延遲秒數更改圖片
3. Slick 圖片輪播
4. 點擊按鈕改變圖片

CSS 動態播放

這種播放方式是將圖片設置好,然後持續播放,而且只需更改 CSS ,非常方便使用。但缺點就是它是自動的,沒辦法再用手動去控制它。

CSS 寫法

.coverflow{
    width: 700px;
    height: 490px;
    position: relative;
}
.coverflow>a{
    display: block;
    position: absolute;
    top:0;
    left:0;
    opacity: 0;
    filter: alpha(opacity=0);
/*當圖片數量增加,影片長度需更改,變為5s*圖片數量*/
 -webkit-animation: silder 15s linear infinite;
 animation: silder 15s linear infinite;
}
.coverflow>a>img{
    max-width: 100%;
}
/*動畫關鍵影格*/
@-webkit-keyframes silder {
    3% {
        opacity: 1;
        filter: alpha(opacity=100);
    }
    27% {
        opacity: 1;
        filter: alpha(opacity=100);
    }
    30% {
        opacity: 0;
        filter: alpha(opacity=0);
    }
}
@keyframes silder {
    3% {
        opacity: 1;
        filter: alpha(opacity=100);
    }
    27% {
        opacity: 1;
        filter: alpha(opacity=100);
    }
    30% {
        opacity: 0;
        filter: alpha(opacity=0);
    }
}
/*每個圖片各延遲5秒*/
.coverflow>a:nth-child(3) {
    -webkit-animation-delay: 10s;
            animation-delay: 10s;               
}
.coverflow>a:nth-child(2) {
    -webkit-animation-delay: 5s;
            animation-delay: 5s;
}
.coverflow>a:nth-child(1) {
    -webkit-animation-delay: 0s;
            animation-delay: 0s;    
}
/*滑入時停止播放*/
.coverflow:hover>a{
-webkit-animation-play-state: paused;
        animation-play-state: paused;
}

HTML 寫法

<div id="cover" class="coverflow">
    <a href='#'><img src='' alt=' ' ></a>
    <a href='#'><img src='' alt=' ' ></a>
    <a href='#'><img src='' alt=' ' ></a>
</div>

以上完成第一種方式

延遲秒數更改圖片

js 寫法

1. 設定圖片內容

2. 更新秒數

setInterval("randomImg()",2000);//兩秒更新
function sequentialImg() {
 var jsImg_len = jsImg.length;
 var i = 0;
 console.log(jsImg_len);
 document.getElementById("cover").innerHTML  = "<img src='" + jsImg[i] + "' width=80%>";        
 if(i >= jsImg_len)  
    {
        i = 0;
    }
 i++;
}

HTML 寫法
只要加在 body 裡讓它不斷更新就可以了

<body onload="sequentialImg();">

不太喜歡,因為更新整個頁面,跳動感覺很不舒服,有點影響觀看。

以上完成第二種方式

Slick

這是一個很好用的輪播方式

Demo 網頁: https://kenwheeler.github.io/slick/

首先加入CDN

CDN:
<script type=”text/javascript” src=”https://cdn.jsdelivr.net/gh/kenwheeler/[email protected]/slick/slick.min.js“></script>

<link rel=”stylesheet” type=”text/css” href=”https://cdn.jsdelivr.net/gh/kenwheeler/[email protected]/slick/slick.css“/>
<link rel=”stylesheet” type=”text/css” href=”https://cdn.jsdelivr.net/gh/kenwheeler/[email protected]/slick/slick-theme.css“/>

設定輪播圖片的 style

CSS

.wrapper {
   width:100%;
   height:30%;
   padding-top: 5px;
   text-align:center;
   background-color: #646675
 }
 .carousel {
   width:90%;
   margin:0px auto;
 }
 .slick-slide {
   margin:10px; //圖片與圖片的間隔大小
 }
 .slick-slide img {
   width:100%;
   border: 2px solid #fff; //圖片的邊框大小
 }

JS

$('.carousel').slick({
   slidesToShow: 3,  //可以控制每個輪播有幾張圖片
   dots:true,
   centerMode: true,
 });

HTML

<div class="container">  
 <div class="wrapper">
  <div id="cover" class="carousel">
   <div><img src='01.jpg' /></a></div>
   <div><img src='02.jpg' /></a></div>
   <div><img src='03.jpg' /></a></div>
   <div><img src='04.jpg' /></a></div>
  </div>
 </div>
</div>

以上完成第三種方式

點擊按鈕改變圖片

最後是使用按鈕改變圖片的方式

可以上下調整觀看圖片,這個也很方便兒

HTML 寫法如下:

<div class="row p-2">
   <div class="btn-group-toggle col-md-2 center-block" data-toggle="buttons" onclick="previousImg()">
     <label class="btn btn-secondary active">
         <input type="checkbox" checked autocomplete="off">Previous
     </label>
   </div>
   <div class="btn-group-toggle col-md-2 center-block" data-toggle="buttons" onclick="nextImg()">
     <label class="btn btn-secondary active">
         <input type="checkbox" checked autocomplete="off">Next
     </label>
   </div>
</div>

JS 寫法:

function previousImg() {
  i--;
  if(i == -1)
     i = jsImg.length - 1 ;
  document.getElementById("cover").innerHTML = "<img class='rounded'    src='" + jsImg[i] + "' alt=' ' width=80% />";
}
function nextImg() {
  i++;
  if(i == jsImg.length)
     i = 0;
  document.getElementById("cover").innerHTML = "<img class='rounded' src='" + jsImg[i] + "' alt=' ' width=80% />"; 
}

以上完成第四種方式