CSS 習作|Box Sizing 盒模型計算方式

更新 發佈閱讀 6 分鐘
raw-image
The CSS box-sizing property allows us to include the padding and border in an element's total width and height.

box-sizing 是 CSS 屬性的一種,它使我們可以 改變盒模型的計算方式。
而 box-sizing 可以使用的值有以下:

  • box-sizing: content-box;
    ( width、height 設定作用在 content-box )
  • box-sizing: border-box;
    ( width、height 設定作用在 content-box + padding-box + border-box )


Box-model 盒模型

預設情況下,元素的寬度和高度計算如下:

元素的實際寬度 = width + padding + border
元素的實際高度 = height + padding + border

拆解來看,一個元素的盒模型會由以下所構成,由內而外分別是:

raw-image
  • 藍色 content-box
  • 綠色 padding-box
  • 橘黃 border-box
  • 橘色 margin-box


通常預設為:box-sizing:content-box

一般來說盒模型的計算方式會 預設為 box-sizing: content-box;,當我們為一個元素設定 width、height 時,寬高的設定作用僅在 content-box 範圍。

以下列程式碼為例:
width 500px 的作用範圍僅在 content-box 區塊。

*{ 
 box-sizing: content-box;
}
.box{
width: 500px;
height: 500px;
background: #95B5BF;
padding: 60px;
border: 30px solid #F8DDA4;
margin: 30px;
font-size: 20px;
}

而元素實際大小因為有 padding 和 border 而被撐出寬高,變成 680px,若加上 margin,則元素在畫面中所佔面積為 740px,如下圖:

raw-image



box-sizing:content-box 的計算方式

藍色的 content-box 是指 width 的寬度, width 作用範圍僅在 content-box。
因此,若我們對一個元素設定 width: 500px;,如在裡面放入文字,當文字數量累積超過寬度 500px 時就會換行繼續新增,計算方式參照下圖:

raw-image


box-sizing:border-box 的計算方式

border-box 的 width 作用範圍為 content-box、padding-box、border-box。
可以發現在 box-sizing:border-box 下, content-box 變為 320px*320px,padding 和 border 的寬度也被內推算進 500px 裡面了。

其中需要注意,box-sizing:border-box 下的內堆變化,並不是縮減 padding 和 border 來使其符合寬度 width 500px,而是 content-box 裡的寬度被推擠而變為 320px*320px,而裡面的文字寬度也保持為 20px。

若加上 margin,則元素在畫面中所佔面積為 560px*560px。

raw-image


在畫面上的差異

可以看到在 box-sizing:border-box 下,一行文字的數量變少了,而產生這樣的變化是因為盒模型的計算方式被改變使得被內推,此時 content-box 的文字內容寬度為:一個字 20px* 一行 16個字= 20px*16 = 320px

raw-image

問題紀錄:誤區測試與釐清

  1. box-sizing:border-box 下,如果 padding、border 的數值大於 width 時會發生什麼?
  2. 什麼樣的情況下,會使在 box-sizing:border-box 下仍然破版、跑版?
  3. box-sizing:border-box 下,如何伸縮自如的掌握自己設計的每個元件尺寸


本篇參考學習資源

Box-sizing - 金魚都能懂的CSS必學屬性

w3schools - CSS Box Sizing

小結

box-sizing 的觀念看似沒有很複雜,但是暗藏很多玄機,常常在實作中覺得畫面不如預期,希望透過本次習作筆記,加深瞭解其運作原理。

Practice make perfect, 我是正在自我習作中的 Draw,我們下篇見 🙇🏻

留言
avatar-img
留言分享你的想法!
avatar-img
學習如何學習
6會員
10內容數
從零開始,記錄網頁設計的學習過程。
學習如何學習的其他內容
2024/04/04
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
2024/04/04
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
2023/09/10
我想分享給那些曾有過相同感受的同學,覺得自己能力不適合、在學習中感到自卑想要放棄的那些時候。而後半篇則想分享自己對於老師、助教的感謝。
Thumbnail
2023/09/10
我想分享給那些曾有過相同感受的同學,覺得自己能力不適合、在學習中感到自卑想要放棄的那些時候。而後半篇則想分享自己對於老師、助教的感謝。
Thumbnail
2023/09/10
本篇為隨筆紀錄,將看完的影片疏理為短小筆記 。 特別有感的是,現在回頭看,發現影片中每個提及的知識點或是誤區自己都踩過好幾輪了,這是在學習及練習中很常會反覆發生、需要注意的地方,提醒自己在接下來的練習中,能將老師提及的思維及作法吸取並應用。
Thumbnail
2023/09/10
本篇為隨筆紀錄,將看完的影片疏理為短小筆記 。 特別有感的是,現在回頭看,發現影片中每個提及的知識點或是誤區自己都踩過好幾輪了,這是在學習及練習中很常會反覆發生、需要注意的地方,提醒自己在接下來的練習中,能將老師提及的思維及作法吸取並應用。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
本篇習作內容進入到 CSS 排版實作,一起瞭解 Flexbox,開始第一個網頁排版吧 💪🏻!
Thumbnail
本篇習作內容進入到 CSS 排版實作,一起瞭解 Flexbox,開始第一個網頁排版吧 💪🏻!
Thumbnail
box-sizing 是 CSS 屬性的一種,它使我們可以改變盒模型的計算方式。
Thumbnail
box-sizing 是 CSS 屬性的一種,它使我們可以改變盒模型的計算方式。
Thumbnail
本篇習作加強自我對 CSS Box Model 的觀念,也是在實作練習中發現自己雖然看似理解了盒模型,但其實在應用上尚不熟悉,因此藉由筆記重新梳理和練習,將 CSS Box Model 的基礎觀念整理並釐清,一起來看看吧!
Thumbnail
本篇習作加強自我對 CSS Box Model 的觀念,也是在實作練習中發現自己雖然看似理解了盒模型,但其實在應用上尚不熟悉,因此藉由筆記重新梳理和練習,將 CSS Box Model 的基礎觀念整理並釐清,一起來看看吧!
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