### 一、Swiper 套件介紹
[Swiper](https://swiperjs.com/) 這是一個 JS 的輪播套件,載入套件,撰寫基本 HTML 結構、JS 設定,即可製作出簡易的輪播效果,今天我們就透過操作一些參數認識這個套件吧 ~
從 [Get Started 頁面](https://swiperjs.com/get-started/) 可以依據自己的需要選擇引入的方式,因為我們目前是使用 CodePen 練習,所以我們是以 CDN 的方式導入
官方提供的 [CDN](https://swiperjs.com/get-started#use-swiper-from-cdn) ☟
```htmlembedded=
<!-- 貼到 <head> 內 -->
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.css"
/>
<!-- 貼到 </body> 之前 -->
<script src="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.js"></script>
```
> 使用 Codepen 可以直接將 `href`、`src` 內連結分別貼至 Settings CSS、JS 區塊「Add External Stylesheets/Pens」內(詳細可以再觀看下方範例)
接下來了解基本使用方式:
1. 基本的 [HTML 架構](https://swiperjs.com/get-started#add-swiper-html-layout)
> 最外層以 div `.swiper` 包覆,是整個 swiper 的容器
> swiper 的內容都放在 `.swiper-wrapper` 中,每個 `.swiper-slide` 是一個輪播項目
> 下方 pagination 分頁、navigation buttons 左右箭頭按鈕、scrollbar 滾動條,可依據需求增減
```htmlembedded=
<!-- Slider main container -->
<div class="swiper">
<!-- Additional required wrapper -->
<div class="swiper-wrapper">
<!-- Slides -->
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">Slide 3</div>
...
</div>
<!-- If we need pagination -->
<div class="swiper-pagination"></div>
<!-- If we need navigation buttons -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<!-- If we need scrollbar -->
<div class="swiper-scrollbar"></div>
</div>
```
2. [初始化設定](https://swiperjs.com/get-started#swiper-css-styles-size)
**CSS:**
如果沒有特別需要限制 swiper 的範圍,可以不需設定,使其自適應即可
```css=
.swiper {
width: ...;
height: ...;
}
```
**JS:**
運用 `new Swiper()` 建立 swiper 實體,
`new Swiper()` 有兩個參數:
- 第一個參數為字串,需填入欲套用輪播效果的 swiper 容器,以上述基本結構為例,swiper 容器為 `.swiper`
- 第二個參數為物件,非必填,可以填入想調整的選項
```javascript=
const swiper = new Swiper('.swiper', {
// 分頁、左右箭頭、滾動條若有使用則必需設定
// 分頁
pagination: {
el: '.swiper-pagination',
},
// 左右箭頭
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
// 滾動條
scrollbar: {
el: '.swiper-scrollbar',
},
});
```
此時就可以簡單呈現出一個輪播效果摟!觀看 [範例](https://codepen.io/hexschool/pen/KKGYjGN)
若想要進一步取得更個別化的畫面與功能,可以閱讀[這裡](https://swiperjs.com/swiper-api#parameters),其中有相關功能的參數可以設定參考。
另外也可以在 [DEMO](https://swiperjs.com/demos) 的部分尋找預期中的模板,再點擊 Core 後就能複製內容的程式碼,並依據需求做調整哦。
### 題目
接下來我們就實際練習看看:
請透過設定參數將此 [Default](https://swiperjs.com/demos#default) ☟
<img src="https://imgur.com/WtxKhjO.png" width="500" style="border: 1px solid rgba(0,0,0,0.1); ">
<br>
設定為以下的樣式 ☟
<img src="https://imgur.com/9cbbCqa.png" width="500" style="border: 1px solid rgba(0,0,0,0.1);">
> - 最外層使用 Bootstrap container
> - 最上方有一個 h1 的標題文字「Swiper」
> `.container > (h1 + .swiper)`
> - 由原本 一個畫面呈現一個 slide ☞ 一個畫面呈現三個 slide
> - 會使用到五張圖片(5 個 slide),每個 slide 間格 30px
>
> 若有困難在答案區有進一步的提示。
**五張圖片的位置**
```htmlembedded=
<img src="https://github.com/hexschool/2022-web-layout-training/blob/main/2023week6/event/01.jpg?raw=true" alt="圖片1">
<img src="https://github.com/hexschool/2022-web-layout-training/blob/main/2023week6/event/02.jpg?raw=true" alt="圖片2">
<img src="https://github.com/hexschool/2022-web-layout-training/blob/main/2023week6/event/03.jpg?raw=true" alt="圖片3">
<img src="https://github.com/hexschool/2022-web-layout-training/blob/main/2023week6/event/04.jpg?raw=true" alt="圖片4">
<img src="https://github.com/hexschool/2022-web-layout-training/blob/main/2023week6/event/05.jpg?raw=true" alt="圖片5">
```
### 二、Collapse 實作
在第六週的設計稿,當畫面縮小時,上方的 navbar 部分就無法完全塞滿所有的項目,這個時候會將某一部份項目壓縮起來,這次的設計稿是使用 hamburger menu

在點擊右上方 hamburger menu 後就能出現下方 REGISTER 與 LOGIN 的畫面,這次的實作我們就採用 Bootstrap 中的 [Collapse元件](https://getbootstrap.com/docs/5.3/components/collapse/) 來處理。
請了解 [Collapse](https://getbootstrap.com/docs/5.3/components/collapse/) 架構後,運用下方程式碼,修改 `...` 的部分與嘗試選擇位置合併 Collapse 的主體,讓 Collapse 能實際運作
**主頁 HTML**
```htmlembedded=
<nav class="container py-12 d-flex align-items-center justify-content-end border-bottom border-2 border-dark">
<div class="hamburger">
<a class="d-flex align-items-center px-12 py-1 border border-dark rounded h-100" data-bs-toggle="collapse" href="..." role="button" aria-expanded="false" aria-controls="collapseExample">
<span class="material-symbols-outlined">
menu
</span></i>
</a>
</div>
</nav>
```
**Collapse 實體的程式碼**
```htmlembedded=
<div class="collapse" id="...">
<ul class="container list-unstyled border-bottom border-2 border-dark py-4">
<li class="mb-3">
<a href="#" class="d-flex align-items-center">
<!-- 這邊先統一使用 material ,在實際執行第六週作業時需使用 icofont-->
<span class="material-symbols-outlined fs-18">
description
</span>
REGISTER
</a>
</li>
<li>
<a href="#" class="d-flex align-items-center">
<span class="material-symbols-outlined fs-18">
person
</span>
LOGIN
</a>
</li>
</ul>
</div>
```
**CSS**
```css=
body {
font-family: "Yeseva One";
}
a {
color: #000000;
text-decoration: none;
}
.fs-18 {
font-size: 18px;
}
.py-12 {
padding-top: 12px;
padding-bottom: 12px;
}
.px-12 {
padding-right: 12px;
padding-left: 12px;
}
.hamburger span {
font-size: 30px;
}
```
> 此作業只有呈現手機漢堡選單畫面
## 回報流程
將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔!
解答位置請參考下圖(需打開程式碼的部分觀看)

<!--
Swiper 的提示:https://swiperjs.com/demos#slides-per-view
可以參考這個 DEMO 的 JS 部分
-->
<!-- Swiper 解答:
https://codepen.io/jmimiding4104/pen/jOQpdJP
-->
<!-- Collapse 實作解答:
https://codepen.io/jmimiding4104/pen/jOQpQJL -->
回報區
---
| # | Discord | CodePen / 答案 |
|:-:|:----------------------- |:----------------------|
| 1 | hebin. | [Codepen](https://codepen.io/landyhsiao776/pen/xxQvyaq) |
| 2 | Amelia | [Codepen-1](https://codepen.io/Amelia-chin/pen/KKrOGbP) / [Codepen-2](https://codepen.io/Amelia-chin/pen/oNQKaVo) |
| 3 | Rochel | [Codepen-1](https://codepen.io/rochelwang1205/pen/WNYVaWV) / [Codepen-2](https://codepen.io/rochelwang1205/pen/XWyvyrp)||
| 4 | Vic_Liou | [Codepen](https://codepen.io/allenliou-java/pen/JjegmmN) |
| 5 | Yu | [Codepen-1](https://codepen.io/yuch3n_chen/pen/RwqXevJ) / [Codepen-2](https://codepen.io/yuch3n_chen/pen/rNQXQNW) |
| 6 | Ann Chou | [Codepen](https://codepen.io/annchou_illu/pen/dyQxgrJ) |
| 7 | xuan#0808 | [Codepen-1](https://codepen.io/xuan0915/pen/zYMgMxw) / [Codepen-2](https://codepen.io/xuan0915/pen/mdQNQOv?editors=1100) |
| 8 | shcopy | [Codepen](https://codepen.io/shcopy/pen/GRwVYBG) |
| 9 | pinyi_9 | [Codepen-1](https://codepen.io/Wpypy/pen/QWJeJbw) / [Codepen-2](https://codepen.io/Wpypy/pen/NWEQEbP?editors=1100) |
| 10 | stevenchang421 | [Codepen-1](https://codepen.io/vwtrpqmm/pen/xxQvyor) / [Codepen-2](https://codepen.io/vwtrpqmm/pen/YzRmRpJ) |
| 11 | meowmeow | [codepen-1](https://codepen.io/snow1224/pen/QWJeJpj) / [codepen-2](https://codepen.io/snow1224/pen/RwqXqMO) |
| 12 | Kimi | [codepen-1](https://codepen.io/kimihu91/pen/KKrOrQN) / [Codepen-2](https://codepen.io/kimihu91/pen/WNYmwmZ) |
| 13 | ann6212 | [codepen](https://codepen.io/yqmegupa-the-styleful/pen/BaGXqOv) |
| 14 | deli0529 | [codepen1](https://codepen.io/delichaomoon/pen/YzRmJBa) / [codepen2](https://codepen.io/delichaomoon/pen/JjegeMZ)|
|15|Moreene|[Codepen1](https://codepen.io/Moreene/pen/jOQgQar) / [Codepen2](https://codepen.io/Moreene/pen/rNQXQrY)|
| 16 | bf_tsai | [Codepen](https://codepen.io/BF-Tsai/pen/NWEQOmZ) |
| 17 | ovo.yun | [Codepen1](https://codepen.io/yun-the-scripter/pen/zYMgMWp) / [Codepen2](https://codepen.io/yun-the-scripter/pen/yLQmQxb?editors=1100)|
| 18 | kuanju27 | [Codepen1](https://codepen.io/Eero-Chiao/pen/MWzNzqo) / [Codepen2](https://codepen.io/Eero-Chiao/pen/OJaKaqy)|
| 19 | Eden | [Codepen1](https://codepen.io/iseden/pen/KKrOrzV) / [Codepen2](https://codepen.io/iseden/pen/abQePOQ)|
| 20 | lychee_kk | [Codepen1](https://codepen.io/kakakala/pen/ExOqGad) / [Codepen2](https://codepen.io/kakakala/pen/JjegwEV)|
| 21 | m_m | [Codepen](https://codepen.io/minnn7716/pen/JjegwXz) |
| 22 | hao2485 | [Codepen](https://codepen.io/Seanfeb16/pen/YzRmByZ) |
| 23 | Atsushi#6888 | [Codepen1](https://codepen.io/atsushi-amuro/pen/NWEQoGB) / [Codepen2](https://codepen.io/atsushi-amuro/pen/eYQqxKp?editors=1100)|
| 24 | AYA | [Codepen-1](https://codepen.io/NoNameNote/pen/ZEmgwPQ) / [Codepen-2](https://codepen.io/NoNameNote/pen/xxQvBVP) |
| 25 | Uli | [Codepen](https://codepen.io/uli1313/pen/mdQNoQN) |
| 26 | jacky7035 | [Codepen-1](https://codepen.io/adens123/pen/YzRmgrd) / [Codepen-2](https://codepen.io/adens123/pen/ZEmgPdv) |
| 27 | ming0712 | [Codepen-1](https://codepen.io/StevenHuang/pen/gOQVyxw) / [Codepen-2](https://codepen.io/StevenHuang/pen/yLQmrRx) |
| 28 | 小夏 | [Codepen-1](https://codepen.io/michaelhsia/pen/oNQKmaG) / [Codepen-2](https://codepen.io/michaelhsia/pen/ZEmgNvE?editors=1100) |
| 29 | 泊岸#3466 | [Codepen-1](https://codepen.io/qoq77416416/pen/vYQowwj) / [Codepen-2](https://codepen.io/qoq77416416/pen/QWJeeBQ?editors=1100) |
| 30 | hannahTW | [Codepen-1](https://codepen.io/hangineer/pen/vYQowvR) / [Codepen-2](https://codepen.io/hangineer/pen/LYMPPmy?editors=1100) |
| 31 | soniawu | [Codepen-1](https://codepen.io/YUJOU/pen/abQeego) / [Codepen-2](https://codepen.io/YUJOU/pen/KKbPPej?editors=1100) |
| 32 | yu.t_liu | [Codepen-1](https://codepen.io/YuT200053/pen/eYbOOYa) / [Codepen-2](https://codepen.io/YuT200053/pen/ZEVzzjY) |
|33 | Berlin | [Codepen-1](https://codepen.io/3qberlin/pen/QWzLLyZ) / [Codepen-2](https://codepen.io/3qberlin/pen/qBLWWJm) |
| 34 | JohnChien | [Codepen-1](https://codepen.io/glqwazid-the-selector/pen/KKbPwpv) / [Codepen-2](https://codepen.io/glqwazid-the-selector/pen/jOXNEYY) |
| 35 | .icesam | [Codepen-1](https://codepen.io/icesam/pen/WNLexyr) / [Codepen-2](https://codepen.io/icesam/pen/oNJvLaa) |
| 36 | townyuan | [Codepen-1](https://codepen.io/townyuan/pen/gOZYMRy) / [Codepen-2](https://codepen.io/townyuan/pen/zYyOByR) |
| 37 | Tami | [Codepen-1](https://codepen.io/wqsdqbjn-the-vuer/pen/RwEbKrY) / [Codepen-2](https://codepen.io/wqsdqbjn-the-vuer/pen/MWZgJRo) |
| 38 | Renee Wang | [Codepen-1](https://codepen.io/RENEE-WANG-the-looper/pen/VwVoNPw) / [Codepen-2](https://codepen.io/RENEE-WANG-the-looper/pen/ZEmgZLR) |
| 39 | Johnson3669 | [Codepen-1](https://codepen.io/crpbugqy-the-typescripter/pen/YzdKxbq) / [Codepen-2](https://codepen.io/crpbugqy-the-typescripter/pen/rNoBGyX) |
| 40 | SKey#9905 | [Codepen-1](https://codepen.io/Dale-Chien/pen/qBLWMqg) / [Codepen-2](https://codepen.io/Dale-Chien/pen/BavBOJQ) |
| 41 | rjjq | [Codepen-1](https://codepen.io/rjjq/pen/zYyOJYW) / [Codepen-2](https://codepen.io/rjjq/pen/wvRwEgz) |
| 42 | Tina02 | [Codepen-1](https://codepen.io/chjitlox-the-bashful/pen/GRPKYBQ) / [Codepen-2](https://codepen.io/chjitlox-the-bashful/pen/MWZgPXN) |
| 43 | awei | [Codepen-1](https://codepen.io/hong-wei/pen/KKbPrez) / [Codepen-2](https://codepen.io/hong-wei/pen/eYbOQbR) |
| 44 | shuuu | [Codepen-1](https://codepen.io/afjrvjzl-the-bashful/pen/GRPKPOp?editors=1100) / [Codepen-2]() |
| 45 | Randy | [Codepen-1](https://codepen.io/landy510/pen/NWeWxLj) / [Codepen-2](https://codepen.io/landy510/pen/KKbKzzB?editors=0100) |
| 46 | wind | [Codepen-1](https://codepen.io/wind7y/pen/dywypdB) / [Codepen-2](https://codepen.io/wind7y/pen/abPbBpo) |
| 47 | cest_jessie | [Codepen-1](https://codepen.io/itsjessiechen/pen/RwEwKvE) / [Codepen-2](https://codepen.io/itsjessiechen/pen/mdadWPZ) |
| 48 | Jules_Hsu | [Codepen-1 + 2](https://codepen.io/cjntfsoq-the-animator/pen/GRPRMqr) |
| 49 | Lianne._. | [Codepen-1](https://codepen.io/Elaina-L/pen/KKbKOXW) |
| 50 |yunhsinnnnnnn | [Codepen-1](https://codepen.io/yun___hsin/pen/oNJgYYN) / [Codepen-2](https://codepen.io/yun___hsin/pen/jOXEVYx) |
| 51 | tanuki5863 | [Codepen-1](https://codepen.io/tanuki320/pen/bGONryB) / [Codepen-2](https://codepen.io/tanuki320/pen/eYbmGWP) |
| 52 | Paul#7426 |[Codepen-1](https://codepen.io/paul-1997/pen/RwENEzb) / [Codepen-2](https://codepen.io/paul-1997/pen/OJrPreM)|
| 53 | liam9930|[Codepen-1](https://codepen.io/jgnjfvvt-the-lessful/pen/VwqYMRK) / [Codepen-2](https://codepen.io/jgnjfvvt-the-lessful/pen/XWobrdB)|
| 54 | PayRoom#8328 | [Codepen-1](https://codepen.io/water38198/pen/rNoVMYw) / [Codepen-2](https://codepen.io/water38198/pen/GRPJNOZ) |
| 55 | mm_ieat | [Codepen-1]() / [Codepen-2]() |
| 56 | runweiting | [Codepen-1](https://codepen.io/weiting14/pen/eYbNBdr) / [Codepen-2](https://codepen.io/weiting14/pen/zYyGooJ) |
| 57 | 希月 | [Codepen-1](https://codepen.io/9001mina/pen/qBLdvmb) / [Codepen-2](https://codepen.io/9001mina/pen/ZEVGPwE?editors=1100) |
| 58 | santu0868 | [Codepen-1](https://codepen.io/HatsumiSan/pen/ZEVbpxp) / [Codepen-2](https://codepen.io/HatsumiSan/pen/wvRKzOv) |
| 59 | Long | [Codepen-1](https://codepen.io/Loonng/pen/MWZKYjg) / [Codepen-2](https://codepen.io/Loonng/pen/ZEVQYxQ?editors=1010) |
| 60 | adele6199 | [Codepen-1](https://codepen.io/codepen-io-winnie/pen/xxmZdza) / [Codepen-2](https://codepen.io/codepen-io-winnie/pen/vYvLZyN) |
| 61 | peggy3169 | [Codepen-1](https://codepen.io/peggylai/pen/jOXWzJv) / [Codepen-2](https://codepen.io/peggylai/pen/poqgVEB) |
| 62 | sinsaki225 | [Codepen-1](https://codepen.io/a8322342/pen/OJrXQQq) / [Codepen-2](https://codepen.io/a8322342/pen/RwERJzv) |
| 63 | 歐陽龍龍#1061 | [Codepen-1](https://codepen.io/dizzydog-rgb/pen/JjwbRNV) / [Codepen-2](https://codepen.io/dizzydog-rgb/pen/xxmREJo) |
| 64 | RX00#5351 | [Codepen-1](https://codepen.io/llqzknqv-the-styleful/pen/QWzERow) / [Codepen-2](https://codepen.io/llqzknqv-the-styleful/pen/oNJBxeL) |
| 65 | yuan2781 | [Codepen-1](https://codepen.io/ismebir/pen/RwEgGNM) / [Codepen-2](https://codepen.io/ismebir/pen/GRPEjGz) |
| 66 | patrickpie | [Codepen-1](https://codepen.io/patrickpie/pen/RwEMRbQ) / [Codepen-2](https://codepen.io/patrickpie/pen/rNodLbz?editors=1100) |
| 67 | 阿維#2569 | [Codepen-1](https://codepen.io/iijojpli-the-looper/pen/xxmQPaM) / [Codepen-2](https://codepen.io/iijojpli-the-looper/pen/yLGQprd) |
---
```markdown=
| 0 | user | [Codepen-1](https://codepen.io/MINN3/pen/KKbKJLJ) / [Codepen-2](https://codepen.io/MINN3/pen/bGOdgEM) |
```