iT邦幫忙

2021 iThome 鐵人賽

DAY 9
1

此篇會著重在 Bootstrap 5 響應式的介紹以及使用方法。

RWD

響應式網頁設計 (Responsive Web Design) 簡稱 RWD,為了讓網頁排版能適應不同尺寸的裝置,透過 CSS3 的 media query 針對不同裝置來設置對應的樣式。

環境設置

Step1:起手式(設置 viewport

<head> 標籤引入 viewport<meta> 標籤

  • width=device-width : 瀏覽器頁面寬度=當前裝置的寬度。(ex: 平板、手機)
  • height=device-height:瀏覽器頁面高度=當前裝置的高度。(ex: 平板、手機)
  • initial-scale=1.0 : 畫面初始縮放比例為 100%(即不放大也不縮小)。
  • minimum-scale:允許使用者縮放到的最小比例。
  • maximum-scale:允許使用者縮放到的最大比例。
  • user-scalable : 設定使用者能否手動縮放比例,user-scalable=no 就是不允許縮放。
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

Step2:透過斷點來設置不同裝置大小對應的樣式

bootstrap 5 使用響應式會在樣式後面加上 -* 斷點的通用類別名稱。(ex:class="p-md-2"

示範:此容器的 padding、文字大小,都設置了三個斷點,並對應不同尺寸裝置所顯上的樣式。

<div class="p-1 p-md-2 p-lg-3">
  <p class="fs-1 fs-2 fs-3">響應式文字</p>
</div>

media query

用來判別裝置的尺寸,在設置相對應尺寸的樣式。

media 語法:

  • @media (條件) {樣式}

透過 max-*min-* 設置不同裝置尺寸的範圍,來指定對應樣式。

@media(max-width:767px) {
  .container{
    max-width: 720px;
  }
}

@media(max-width:992px){
  .container{
    max-width: 960px;
  }
}

覆蓋特性(程式碼由上到下),因此後面樣式會覆蓋前。


斷點

斷點是響應式開發的基礎,使用斷點來控制在特定尺寸或設備上調整佈局。

斷點樣式表

常見尺寸:

  • 手機:375 ~ 414(最小的是 iphone5、SE - 320px)
  • 平板:iPad 768px
  • PC:1140、1200

常用設置:

  • Phone:767px(iPad 是 768px,因此 767 以下皆算手機裝置)
  • iPad-PC:992px
  • PC:1200px

裝置大小

  • min-width:手機優先(裝置從小到大)
  • max-width:桌機優先(裝置從大到小)

Bootstrap 是 min-width 手機優先,預設沒有斷點狀況是手機大小的樣式。

手機優先(由小寫到大):CodePen範例

@media (min-width: 576px) { ... }

@media (min-width: 768px) { ... }

@media (min-width: 992px) { ... }

@media (min-width: 1200px) { ... }

@media (min-width: 1400px) { ... }

桌面版優先(由大寫到小):CodePen 範例

@media (max-width: 1399.98px) { ... }

@media (max-width: 1199.98px) { ... }

@media (max-width: 991.98px) { ... }

@media (max-width: 767.98px) { ... }

@media (max-width: 575.98px) { ... }

注意事項:

  • 記得由優先權高的先寫,並依照 順序 撰寫,不然樣式會無法覆蓋。(覆蓋特性 後面的樣式會覆蓋前面的樣式)
    /* 錯誤範例 */
    @media (min-width: 576px) { ... }
    
    @media (min-width: 992px) { ... }
    
    @media (min-width: 768px) { ... }
    
  • 不要 min-widthmax-width 混用。
    /* 錯誤範例 */
    @media (min-width: 576px) { ... }
    
    @media (max-width: 992px) { ... }
    
  • 斷點 越少 越好 3-4 個即可。(不要超過五個,除非客戶很機八)

min-width、max-width 如何選擇 ?

two buttons

小技巧:

  • 看產品是否專為某種客群做使用。
  • 全部裝置都包,那就看習慣哪個。

我自己喜歡 min-width 比較方便設置 @media 區間,平時也使用 Bootstrap 比較多。

職場小聚場

第一次 Demo

第二次 Demo


小技巧

善用版型單位%

問題:版型寫死導致子元素破版超出父元。

解決:

  • 透過 % 數 計算容器大小,來達到尺寸自適應縮放。

% 數計算:

  • 100 / 需要的欄數
    • 一欄:100%
    • 兩欄:50%
    • 三欄:33.333%

通常不會算滿 100% 會少一點點預留空間。


max-width 取代 width

網頁出現滾動軸,別說是 RWD 網頁。

問題:外層寫死了寬度,導致瀏覽器沒有自適應縮放,小於 1400px 時就會出現 x 軸。

container{ 
  width: 1400px;
}

解決:改寫為 max-width

row {
	max-width: 100%;
  /*max-width: 1400px;*/
  margin: 0 auto;
}

優點:

  • 可指定最大尺寸,使其不會無限放大或縮小。
  • 自適應父層尺寸。

如何判斷網站是否有使用 RWD

  1. 是否有設置 viewport
  • 沒有設的,都不能稱 RWD。
  1. 是否有出現滾動軸(除非是設計好的)
  • RWD 會自適應推擠內容,不應該出現滾輪(滾動軸)。

上一篇
第 8 集:Gird System 格線系統
下一篇
第 10 集:淺談 Container Wrapper 差異
系列文
30 天轉生到 bootstrap 5 的意識界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言