網頁前端圖片輪播,讓我們來輕鬆實現多種吸引人的圖片輪播效果,我個人超推Swiperjs套件來呈現圖片、文字或公告,裏面提供超多輪播方式給我們選擇,包括幻燈片的垂直和水平方向、3D旋轉、卡片式輪播、漸進式…等,這些效果直接提升網站的設計感,下面主要展示我個人認為好用,同時用在公司形象網站中的幾種輪播,讓我們馬上來玩玩看。
Swiperjs 官網(有範例參考)
Swiperjs GitHub(程式原始碼)
網頁前端圖片輪播-Swiper
步驟說明
- 引入套件CSS、JavaScript
– CSS 放置於 <head></head> 內
– JavaScript 放置於 </body> 之前 - 加入HTML、JavaScript
– 創建一個<div class=”swiper”>
– 創建一個<div class=”swiper-wrapper”>
– 創建多個<div class=”swiper-slide”>
– 創建前後頁按鈕<div class=”swiper-button-prev”>、<div class=”swiper-button-next”>
– JavaScript創建一個 Swiper
– 設定屬性與功能
(Note:swiper、swiper-slide 可以先在 css 自定義一些樣式,下方第一段程式碼 <!– 自定義的style放在<head>內 –>) - 附上程式碼
<!-- 自定義的style放在<head>內 -->
<style>
.swiper {
width: 300px;
height: 300px;
}
.swiper-slide {
text-align: center;
font-size: 18px;
display: flex;
justify-content: center;
align-items: center;
}
</style>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" />
</head>
<body>
<div class="swiper"> <!-- swiper class 會被 new Swiper('.swiper' 使用 -->
<div class="swiper-wrapper"> <!-- 讓Swiper知道要輪播的內容位置必須為 swiper-wrapper -->
<div class="swiper-slide">Page 1</div>
<div class="swiper-slide">Page 2</div>
<div class="swiper-slide">Page 3</div>
</div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script>
const swiper = new Swiper('.swiper', { // 創建一個輪播
autoplay: { // 自動輪播 swiper
delay: 2 * 1000, // 每兩秒切換下一張
},
loop: true, // 輪播結束後回到第一張繼續輪播
navigation: { // 前一張、下一張按鈕
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
</script>
</body>
</html>
程式碼說明
- new Swiper 創建一個輪播
- <div class=”swiper”>
在JavaScript區塊中new Swiper(‘.swiper’),會去找Html是否有swiper的class標籤 - <div class=”swiper-wrapper”>
Swiper會找swiper-wrapper的class標籤,並將它設定為輪播內容位置 - <div class=”swiper-slide”>
Swiper再將class為swiper-slide的標籤視為一個內容
<div>標籤內容放你想顯示的輪播內容(ex: 圖片、影片、文字) - 如果在JavaScript區塊中有使用”navigation”這個物件
會去找nextEl、prevEl相對應class的標籤,並將他設定為前後頁按鈕
(如果只想讓使用者往下切可以只放 <div class=”swiper-button-next”>)
進階用法
頁籤式
– 新增 <div class=”swiper-pagination”></div> 並將切換前後按鈕的div移除(也可以保留)
– new Swiper新增”pagination”物件
將el的值設定剛新增的div class “.swiper-pagination”
– pagination底下dynamicBullets用來呈現切換頁的動畫(可關閉)
<body>
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">Page 1</div>
<div class="swiper-slide">Page 2</div>
<div class="swiper-slide">Page 3</div>
<div class="swiper-slide">Page 4</div>
<div class="swiper-slide">Page 5</div>
<div class="swiper-slide">Page 6</div>
</div>
<div class="swiper-pagination"></div> <!-- 頁籤 -->
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script>
const swiper = new Swiper('.swiper', {
pagination: { // 使用頁籤方法
el: ".swiper-pagination", // 找到class為swiper-pagination的標籤
dynamicBullets: true, // 是否使用動畫
},
});
</script>
</body>
進度條
– “pagination”底下加入type屬性並給予”progressbar”產生進度條
<body>
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">Page 1</div>
<div class="swiper-slide">Page 2</div>
<div class="swiper-slide">Page 3</div>
<div class="swiper-slide">Page 4</div>
<div class="swiper-slide">Page 5</div>
<div class="swiper-slide">Page 6</div>
</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script>
const swiper = new Swiper('.swiper', {
pagination: {
el: ".swiper-pagination",
type: "progressbar", // 顯示進度條
},
navigation: { // 前一張、下一張按鈕
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
</script>
</body>
頁數切換
– “pagination”底下加入clickable屬性表示可點擊
– “pagination”底下加入renderBullet並以html客製化數字按鈕
className為按鈕的class
index為<div class=”swiper-slide”>的陣列從0開始所以需要 +1 來顯示相對應的數字
/* 加入數字頁籤的style */
.swiper-pagination-bullet { /* 圓圈 */
width: 20px;
height: 20px;
text-align: center;
line-height: 20px;
font-size: 12px;
color: #000;
opacity: 1;
background: rgba(0, 0, 0, 0.2);
}
.swiper-pagination-bullet-active { /* 目前所選的圓圈 */
color: #fff;
background: #e5be20;
}
<body>
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">Page 1</div>
<div class="swiper-slide">Page 2</div>
<div class="swiper-slide">Page 3</div>
</div>
<div class="swiper-pagination"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script>
const swiper = new Swiper('.swiper', {
pagination: {
el: ".swiper-pagination",
clickable: true,
renderBullet: function (index, className) {
return '<span class="' + className + '">' + (index + 1) + "</span>";
},
},
});
</script>
</body>
效果覆蓋流(Effect coverflow)
– 電腦能看到整體效果
– <div class=”swiper-slide”> 我們輪播內容放 img (圖片大小最好跟class相同, 我是用正方形)
– 針對 swiper、swiper-slide css 調整成自己想要的大小
– 加入effect屬性為”coverflow”
– grabCursor可以讓使用者感覺用抓的在移動輪播內容UX提升
– centeredSlides讓內容置中顯示
– slidesPerView顯示所有的內容(透過swiper大小設定隱藏後面的輪播內容)
– coverflowEffect相關屬性設定大家可以針對喜好調整數值試試看
.swiper { /* 整個swiper大小 */
width: 50%;
height: 300px;
padding-top: 50px;
padding-bottom: 50px;
}
.swiper-slide { /* 每個swiper-slide內容大小 */
background-position: center;
background-size: cover;
width: 300px;
height: 300px;
}
.swiper-slide img { /* 圖片大小 */
display: block;
width: 100%;
}
<body>
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="圖片網址" /> <!-- 拍謝,這邊我們各自去找圖片 -->
</div>
<div class="swiper-slide">
<img src="圖片網址" /> <!-- 拍謝,這邊我們各自去找圖片 -->
</div>
<div class="swiper-slide">
<img src="圖片網址" /> <!-- 拍謝,這邊我們各自去找圖片 -->
</div>
<div class="swiper-slide">
<img src="圖片網址" /> <!-- 拍謝,這邊我們各自去找圖片 -->
</div>
</div>
<div class="swiper-pagination"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script>
const swiper = new Swiper('.swiper', {
effect: "coverflow", // 打開coverflow效果
grabCursor: true, // 滑到內容上時更改滑鼠樣式變成手套
centeredSlides: true, // 內容頁置中
slidesPerView: "auto", // 預覽每個內容頁
coverflowEffect: {
rotate: 50, // 內容角度
stretch: 0, // 前後張距離
depth: 0, // 與目前內容的前後距離(設成1000可以知道我在說啥)
modifier: 1, // 兩側傾斜度
slideShadows: true, // 前後內容陰影
},
pagination: {
el: ".swiper-pagination",
},
});
</script>
</body>
3D方塊旋轉
– 加入effect屬性設定為cube
– cubeEffect 方塊的相關屬性
.swiper {
width: 300px;
height: 300px;
}
.swiper-slide img {
display: block;
width: 100%;
}
<body>
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="圖片網址" />
</div>
<div class="swiper-slide">
<img src="圖片網址" />
</div>
<div class="swiper-slide">
<img src="圖片網址" />
</div>
<div class="swiper-slide">
<img src="圖片網址" />
</div>
</div>
<div class="swiper-pagination"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script>
const swiper = new Swiper('.swiper', {
effect: "cube", // 效果3D方塊
autoplay: {
delay: 2500, // 每2.5自動播放
disableOnInteraction: false, // 使用者切換頁時是否關閉自動播放
},
loop: true, // 播到最後一張是否可重新回第一張播放
grabCursor: true, // 手手
cubeEffect: {
shadow: true, // 陰影
slideShadows: true,
shadowOffset: 20, // 陰影跟cube距離
},
pagination: {
el: ".swiper-pagination",
},
});
</script>
</body>
總結
Swiperjs網頁前端圖片輪播套件首選真的優,公司首頁、形象官網都非常適用,提供很多輪播方式,上面的舉例我相信很夠用在大家開發的專案內,幾個簡單的引用直接變幻無窮,如果不夠想看哪種方式,大家可以留言給我,或是任何操作有疑問都可以讓我知道,我會盡量在一週內回覆你留言與透過email回覆給你,祝各位開發順利。