iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
Modern Web

【每天5分鐘】學前端系列 第 22

Day22【每天5分鐘】學前端 | CSS RWD 響應式網頁設計

  • 分享至 

  • xImage
  •  

什麼是 RWD ?

有發現同一個網站,在使用 電腦平板手機 瀏覽時,
視覺上 排版方式 不太一樣嗎?
這個就是 RWD(響應式網頁設計)

以下引用自維基百科

回應式網頁設計(Responsive Web Design,通常縮寫為 RWD ),或稱自適應網頁設計、響應式網頁設計、對應式網頁設計。是一種網頁設計的技術,這種設計可使網站在不同的 裝置 (從桌面電腦顯示器到行動電話或其他行動裝置)上 瀏覽 時對應不同解析度皆有 適合 的呈現,減少使用者進行縮放、平移和捲動等操作行為。


HTML 中 <head> 標籤裡的這個 <meta> 標籤,對於 RWD 至關重要。

<meta name="viewport" content="width=device-width, initial-scale=1.0">

它會依設備的寬度進行縮放。


Media Query

要做響應式網頁設計,我們需要用到 CSS3Media Query
它會依照符合的設定,套用相關的 CSS 樣式。

格式如下:

@media screen and (max-width 或 min-width: 寬度設定) {
    CSS 設定
}

舉例:

@media screen and (max-width: 600px) {
    color: red;
}
/* 如果瀏覽器視窗寬度為 600px 或更小時,顏色設定為紅色。 */

max-width 表示最大寬度; min-width 表示最小寬度。

附上 Media Query 連結 W3School 介紹 & 範例MDN 介紹


我們來做一個簡單的 RWD 網頁

由於我找不到 iT 邦幫忙哪裡可以放輪播圖片 或是能自動撥放影片 的地方,
所以用截圖的方式做說明。

瀏覽器寬度 呈現
小~767px https://ithelp.ithome.com.tw/upload/images/20220923/20151346DgJcNUhwTj.png
768px~1023px https://ithelp.ithome.com.tw/upload/images/20220923/201513469A8zdi1GHz.png
1024px~1199px https://ithelp.ithome.com.tw/upload/images/20220923/20151346z5eOOUjDRS.png
1200px~大 https://ithelp.ithome.com.tw/upload/images/20220923/20151346YzHq8HMTZW.png

瀏覽器畫面由 小到大 ,圖片排列依序為一排 1 、 2 、 3 、 4 個。
拉動網頁 大小 ,就能看見排列 變化

/images/emoticon/emoticon37.gif /images/emoticon/emoticon37.gif 來看程式碼吧!

HTML 設定:

<body>
    <div class="container">
        <div class="mobile forTablet forLaptop forDesktop a">
            <img src="caricature.jpeg" alt="似顏繪">
        </div>
        <!-- 這裡省略其他的 <div class="mobile forTablet forLaptop forDesktop b">...</div> -->
        <!-- 只有 class 名稱由 a 改成 b.c.d.e.f.g.h , 其他都一樣 -->
    </div>
</body>

<img> 標籤中的屬性 src 是指圖片 來源 ,值請放入 路徑
屬性 alt替代文字 ,若圖片出不來,網頁會顯示的文字。

CSS 設定:

我們分成一段一段來看

*{
    margin: 0;
    padding: 0;
}

做簡單的 resetCSS,將預設 margin 拿掉

.a{
    background-color: red;
}
/* 這裡省略其他的 .b .c .d .e .f .g .h */
/* 顏色分別設定為 orange、yellow、green、blue、violet、purple、grey */

加上背景色目的為方便觀察。

.container{
    max-width: 1200px;
    margin: auto;
    display: flex;
    flex-wrap: wrap;
}

設定最大寬度、置中、橫向排列(flex)、允許斷行(wrap)。

img{
    width: 100%;
    display: block;
    box-sizing: border-box;
    padding: 10px;
}

圖片寬度佔滿父元素 <div> 、消除圖片下方空間(display: block;)、
從 border 的區域開始計算、設定內距(padding)讓背景色露出來。

.mobile{ width: 100%;}
@media screen and (min-width:768px){
    .forTablet{ width: 50%;}
}
@media screen and (min-width:1024px){
    .forLaptop{ width: 33.33%;}
}
@media screen and (min-width:1200px){
    .forDesktop{ width: 25%;}
}

設定寬度百分比去控制畫面。
讓一排分別呈現 1 、 2 、 3 、 4 張圖片。 (..>◡<..)

附上完整的程式碼在 GitHub 供參考 HTMLCSS


https://ithelp.ithome.com.tw/upload/images/20220923/20151346pdJ6EV8AFr.png 自學指引:

  • 什麼是 vh、vw ?
  • 了解 Bootstrap
  • flex 排列的主軸 & 交錯軸
  • 消除圖片下方空間的多種方法


感謝閱讀,我們明天見囉~~~ /images/emoticon/emoticon29.gif


上一篇
Day21【每天5分鐘】學前端 | JavaScript 流程控制 switch case
下一篇
Day23【每天5分鐘】學前端 | JavaScript 迴圈控制 for
系列文
【每天5分鐘】學前端30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言