方格精選

【自學程式】學習RWD以前,不可或缺的網頁容器概念!

更新 發佈閱讀 6 分鐘

一開始接觸網頁開發的時候,可能會常常在切版時遇到一些奇奇怪怪的問題:版面總是無法貼齊,左右參差不齊;圖片或是版型變形,但都找不到問題,又或者是技術跟不上設計稿,怎麼切怎麼亂。

在遇到以上問題時,我們很常都會直接從跑版的地方開始找起,但看半天都找不到錯,這個時候很有可能不是元素出了錯,而是你根本沒有「網頁容器」的概念。

什麼是網頁容器?

在軟體開發的世界中,有很多東西都可以被稱之為容器,但這裡我們網頁容器指的是:

能夠裝載HTML元素,將其群組化、方便管理的元素。

這樣聽起來實在令人費解,讓我們直接來看程式碼:

在我們還沒有網頁容器概念時,為了要做一個卡片式的自我介紹非常難,不僅文字都會超出照片的範圍也沒辦法在外層建立外框,如果想要置中卡片樣式,可能甚至還想要設定一些亂七八糟的margin來推擠與瀏覽器之間的距離。

但如果有了網頁容器的概念,可以少去很多的功夫,省去一直為了要對齊所產生的程式碼。

讓我們來看看如果讓同一個程式碼加上了容器時,會有什麼不同之處:


我在原本的程式碼外層,多加了一層元素<div>,並給予了它200px的寬度,作為網頁容器。

在這個容器之中的元素,因為受限於容器的寬度,所以文字就不會超出這個照片的邊邊,因為我是根據照片的寬度來設定容器的寬度的。

這裡用白話文解釋一下容器運作的道理:

網頁的容器就好像日常生活中的容器一樣,舉例來說:當我們拿一個杯子裝水,水的體積大小就會跟杯子長得一樣,但如果拿了一個水盆裝水,寬度可能會顯得大很多。

基本上容器裡乘載的內容物,並不會改變,但卻會隨著容器的「形狀」改變寬高。

而網頁容器運作的道理就跟我們拿杯子去裝水的原理是一樣的,我們可以利用容器的大小控制內容物的大小。

在做網頁開發的初期,我們很容易遇到要更改樣式時,就把歪腦筋動到跟改文字段落,或是圖片的本身,當然不是說這樣不好,但是當我們有了容器概念時,就可以將樣式加到容器上。

而HTML及CSS語言有一個很方便的特性,就是子元素可以繼承父的類別設定,讓我們來看看上一個範例的進階版:

以往初學HTML時,很容易把一行能解決的程式碼寫成三行,可能就會使用h1{color: grey;} p{color: grey;}這樣又臭又長的程式碼,來去改變網頁元素的顏色。

當然要刻一個網頁不可能只有一兩種顏色,於是程式碼就會變得又臭又長。

但有了網頁容器的概念後,一切就輕鬆得多,像是只要在父元素上加上color: grey;的屬性,就可以將.card裡的文字顏色都改成灰色的。

很多人在初進行網頁開發時,時常都不會幫自己的網頁元素加入容器的概念,或是不小心將一組元素,放進錯誤的容器裡,舉例來說:

很多網頁為了視覺閱讀的舒適度,不讓網頁寬度順著螢幕大小無限制的延展,都一定會應用網頁容器的概念,把網頁的主要內容設定在1000px上下,除了主要內容以外,其他區塊,像是表頭跟表尾,還是會為了視覺的延展,將其區塊背景設成滿版。

但問題來了明明我的.footer都設定了寬度100%,為什麼還是寬度跟主要內容一樣呢?

仔細一看,才發現原來自己把.footer放到了另外一個擁有width:1024px的容器內,又因為.footer設置了width:100%的設定(此設定會讓元素的寬度維持佔滿父元素的100%寬度),所以.footer的寬度就被限制住了。

但此時只要將.footer部分的程式碼,移出容器外,就可以獲得一個佔滿瀏覽器的表尾了:


為什麼網頁容器對開發RWD如此重要?


初學程式時,總會有一種錯覺,好像程式會幫你想好一切你想做的事,很多地方程式應該要自己設定啊?

甚至有朋友以為,網頁元素不用設定任何寬度,他完全會自適應並達成我們所謂RWD的效果。

但事實是:

程式是很笨的!

程式語言不像正常人在溝通的語言一樣,有很多模糊空間或是彼此能達成共識的部分。

程式語言只能認得準確的指令,如果在做網頁開發時,想挑戰不使用容器將網頁限制在特定的寬度,那網頁一定會跑版跑到你放棄學程式。

另外一點大家常會疑惑的問題是,那我們常見的響應式設計如何設定容器的呢?

RWD的操作方式,主要是針對不同的載具大小,去設計不一樣大小的網頁容器,舉例來說:一般電腦在瀏覽的網頁容器大小可能落在1000px上下,給平板瀏覽的網頁大小會落在800px上下,再小一點智慧型手機瀏覽網頁的容器設置,可能就要小至400px上下了。

再透過CSS的media query語法,偵測不同載具的視窗大小,自動在不同大小的設計中切換。

程式真的沒有這麼聰明,可以自動幫你設計RWD的網頁容器大小。

這個章節主要簡單跟大家分享網頁容器的簡單應用,學會在HTML元素上應用容器技巧,不僅可以省去許多重複性的程式碼,更能將網頁的元素進行模組化的管理。

其他網頁容器的進階應用,會再之後的文章中與大家分享。

其他的網頁技術的問題,或是想要了解更多有關網頁開發的小技巧,歡迎你下方留言跟我討論與交流:)

希望今天的文章有幫助到正在閱讀的你,如果你喜歡我的文章的話,可以留下你的愛心或是收藏我的文章,也或者可以點選「贊助」,你的一杯咖啡絕對是我持續寫下去的動力!或是透過拍拍手,用你小小的行動支持我的創作!

我是Vivian,我們下次見。

關於RWD,你可能會想知道:


關於我:

2019年從英文系畢業,2021下定決心開啟轉職工程師的新生活,相信不斷學習會有成長的一天。

|Instagram: Vivian Yeh|vivian_enlife

|聯絡我:vivian.enlife@gmail.com




留言
avatar-img
Vivian Yeh - 跨領域轉職的軟體工程師
460會員
103內容數
為了追求可以窩在座位上、可以心無旁騖思考問題、座位可以亂七八糟沒關係、不需要到處哈腰點頭跑客戶,不用腳踩十公分、連妝都可以不用化的職場人生,文組少女毅然決然踏上RD的養成日常。
2021/07/03
初學程式的時候,可能會有幾個問題讓你的開發速度低落,腦袋動得很快,但是手卻跟不上想法。 舉例來說: 瀏覽器的DevTool一直報錯,畫面的邏輯出錯,或是畫面根本出不來,但你卻不知道問題出在哪。
Thumbnail
2021/07/03
初學程式的時候,可能會有幾個問題讓你的開發速度低落,腦袋動得很快,但是手卻跟不上想法。 舉例來說: 瀏覽器的DevTool一直報錯,畫面的邏輯出錯,或是畫面根本出不來,但你卻不知道問題出在哪。
Thumbnail
2021/06/15
在HTML程式語言中,有一種能讓HTML元素與其他程式語言(CSS、JavaScript)運作的更加順利的語法,它叫做「HTML屬性(HTML Attribute)」。 那HTML屬性是怎麼運作的呢?
Thumbnail
2021/06/15
在HTML程式語言中,有一種能讓HTML元素與其他程式語言(CSS、JavaScript)運作的更加順利的語法,它叫做「HTML屬性(HTML Attribute)」。 那HTML屬性是怎麼運作的呢?
Thumbnail
2021/06/07
HTML一種建立網頁架構的程式語言,對於初學程式的人來說,HTML是非常好上手的。 它沒有不像是CSS及JavaScript,沒有複雜的邏輯,只要更改程式碼,馬上就可以透過瀏覽器或是模擬器將結果顯示出來。
Thumbnail
2021/06/07
HTML一種建立網頁架構的程式語言,對於初學程式的人來說,HTML是非常好上手的。 它沒有不像是CSS及JavaScript,沒有複雜的邏輯,只要更改程式碼,馬上就可以透過瀏覽器或是模擬器將結果顯示出來。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
養成 1px 都不差的切版練習,紀錄我的訓練過程。
Thumbnail
養成 1px 都不差的切版練習,紀錄我的訓練過程。
Thumbnail
box-sizing 是 CSS 屬性的一種,它使我們可以改變盒模型的計算方式。
Thumbnail
box-sizing 是 CSS 屬性的一種,它使我們可以改變盒模型的計算方式。
Thumbnail
本篇習作加強自我對 CSS Box Model 的觀念,也是在實作練習中發現自己雖然看似理解了盒模型,但其實在應用上尚不熟悉,因此藉由筆記重新梳理和練習,將 CSS Box Model 的基礎觀念整理並釐清,一起來看看吧!
Thumbnail
本篇習作加強自我對 CSS Box Model 的觀念,也是在實作練習中發現自己雖然看似理解了盒模型,但其實在應用上尚不熟悉,因此藉由筆記重新梳理和練習,將 CSS Box Model 的基礎觀念整理並釐清,一起來看看吧!
Thumbnail
在 Modern Web 的世界中,已經有非常多的套件、語法、框架,可以解決大部分網頁排版問題。 以我近期的觀察來說,在專案開發時,大部分公司會為了讓下一個接手、維護的開發者能更快上手專案架構,而採取原生的 CSS 寫法,而不是仰賴快速又方便的套件。
Thumbnail
在 Modern Web 的世界中,已經有非常多的套件、語法、框架,可以解決大部分網頁排版問題。 以我近期的觀察來說,在專案開發時,大部分公司會為了讓下一個接手、維護的開發者能更快上手專案架構,而採取原生的 CSS 寫法,而不是仰賴快速又方便的套件。
Thumbnail
都市傳說:「網頁跑版時,設定 box-sizing: border-box一切搞定!」
Thumbnail
都市傳說:「網頁跑版時,設定 box-sizing: border-box一切搞定!」
Thumbnail
相信大家在一開始接觸 CSS 時,一定會很疑惑為什麼除了 width 外,還會有 max-width 及 min-width 語法呢? 當要開發響應式網頁時,到底要使用什麼語法來控制「斷點」?
Thumbnail
相信大家在一開始接觸 CSS 時,一定會很疑惑為什麼除了 width 外,還會有 max-width 及 min-width 語法呢? 當要開發響應式網頁時,到底要使用什麼語法來控制「斷點」?
Thumbnail
對於前端初學者來說,在切版時會出現很多規則、不規則的網頁區塊,這時候我們會嘗試用各種相對定位、絕對定位、margin 或是 padding 的方式來進行網頁區塊的推擠。
Thumbnail
對於前端初學者來說,在切版時會出現很多規則、不規則的網頁區塊,這時候我們會嘗試用各種相對定位、絕對定位、margin 或是 padding 的方式來進行網頁區塊的推擠。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News