owned this note
owned this note
Published
Linked with GitHub
---
type: slide
---
# swiper套件
###### tags:`HyUI4.0`
---
HyUI 4.0 改使用 swiper 作為輪播的套件
目前使用的版本為 8.4.4
swiper功能也是蠻豐富的,可以自訂的內容也不少
且有中文的API使用參考網站
英文版網站:[https://swiperjs.com/](https://swiperjs.com/)
中文版網站:[https://www.swiper.com.cn/](https://www.swiper.com.cn/)
(中文的api有些是舊的,使用上要注意)
詳細解釋每一個參數:[https://developer.aliyun.com/article/272546](https://developer.aliyun.com/article/272546)
(版本較早,但可以參考)
---
swiper 相較 slick 使用上會稍微複雜一些,且部分class是無法變更名稱的
html結構
```html=
<!-- swiper 區塊 -->
<div class="swiper">
<!-- 輪播內容區塊class不可變更 -->
<div class="swiper-wrapper">
<!-- 輪播項目class不可變更 -->
<div class="swiper-slide" data-title="內容 1">內容 1</div>
<div class="swiper-slide" data-title="內容 2">內容 2</div>
<div class="swiper-slide" data-title="內容 3">內容 3</div>
...
</div>
<!-- 若需要切換點,需自行增加此div -->
<div class="swiper-pagination"></div>
<!-- 若需要左右切換,需自行增加此div -->
<button class="swiper-button-prev"></button>
<button class="swiper-button-next"></button>
<!-- 若需要卷軸,需自行增加此div -->
<div class="swiper-scrollbar"></div>
</div>
```
---
js語法
```javascript=
let mpSliderItem = document.querySelectorAll('.mpSlider .swiper-slide');
let mpSliderPagination = [];
mpSliderItem.forEach((item, index) => {
mpSliderPagination.push(item.dataset.title);
});
const swiper = new Swiper('.swiper', {
slidesPerView: 1, //顯示筆數
spaceBetween: 20, //每筆之間的距離
navigation: {
nextEl: '.bannerSlider .nextSlider', //下一筆class,無障礙設定關係需要增加.nextSlider
prevEl: '.bannerSlider .prevSlider', //前一筆class,無障礙設定關係需要增加.prevSlider
disabledClass: 'swiperArrow-disabled', //不可點選樣式
},
pagination: {
//顯示圓點
el: '.swiperDots', //圓點 class
type: 'bullets', //樣式參考 https://www.swiper.com.cn/api/pagination/299.html
clickable: true, //設定後圓點才可以點擊
renderBullet: function (index, className) {
return `<button class="${className} noFonts" aria-label="${mpSliderPagination[index]}">${mpSliderPagination[index]}</button>`;
},
},
autoplay: {
//自動播放
delay: 5000, //自動播放的間隔
},
loop: true, //無限輪播
effect: 'fade', //淡入
fadeEffect: {
crossFade: true, //上一筆淡出,false上一筆不淡出,下一筆疊在上方
},
});
```
---
pagination圓點切換無障礙相關
如果有需要使用圓點且要有無礙的話
1.html .swiper-slide 增加 data-title="文字"
2.加入以下程式碼,要寫在swiper前面
```javascript=
// 變數每個swiper都要不一樣
//mpSliderItem 指定該swiper元件中的 .swiper-slide
let mpSliderItem = document.querySelectorAll('.mpSlider .swiper-slide');
let mpSliderPagination = [];
mpSliderItem.forEach((item, index) => {
mpSliderPagination.push(item.dataset.title);
});
```
3.swiper的js內 pagination 增加,變數要對應上面設定的變數
```javascript=
renderBullet: function (index, className) {
return `<button class="${className} noFonts" aria-label="${mpSliderPagination[index]}">${mpSliderPagination[index]}</button>`;
}
```
---
左右切換鍵無障礙相關
swiper其實有地方可以設定文字,不同語系要個別設定,所以另外寫語系功能
在main.js最下方有設定箭頭文字的功能
```javascript=
swiperArrows({
next: '.nextSlider',
prev: '.prevSlider',
data: [
//增加語系請寫在這邊
{
lang: 'zh',
nextText: '下一筆',
prevText: '上一筆',
},
//...由此新增其他語系
],
//預設語系
default: {
nextText: 'next',
prevText: 'previous',
},
});
```
<style>
.reveal h1{
font-size:2em;
}
.reveal h1,.reveal h2 {
color:#c9f2ff;
}
.reveal{
font-size:26px;
}
</style>