跟著KP用21天征服Responsive Layout-W1-熟悉相對單位(relative units)

更新於 發佈於 閱讀時間約 7 分鐘

這周KP分享的第二個概念是相對單位(relative units) 、使用的2個原則與陷阱、如何應用它們來做Responsive Layout。

甚麼是相對單位(relative units)

相對單位(relative units)有兩種:

  1. em
  2. rem

相對於px是固定的單位,相對單位會根據某個基準下去縮放。相對單位可以在字體大小(font-size)與 距離間距(padding、margin)使用。

1.em


1.使用於字體大小

使用在字體大小(font-size)的話,em的基準點就是父層元素(parent)。這裡來看個例子:

<div class="parent">
父層​
<div class="child">
子元素​
</div>

</div>
.chid{
font-size:2em
}


  • parent 沒有設定font-size,其font-size就會是瀏覽器預設的16px
  • child的font-size設定2em,其基準是parent。所以child的font-size就是16px*2 = 32px

2.使用於距離間距

<div class="parent">
父層​
<div class="child">
子元素​
</div>

</div>
.chid{
​font-size:2em;
padding: 1em,/*加上padding*/
margin:2em;/*加上margin*/

}
}
  • child的font-size如上述是32px
  • child的padding是1em,這時候相對的基準是child的font-size,而不是parent的。所以child的padding是32px*1 = 32px
  • child的margin是2em,所以是32px*2 = 64px


em的層層放大的陷阱

<div class="parent">
父層​
<div class="child">
子元素​
<div class="child2">
子元素​2
<div class="child3">
子元素​3
</div>
</div>
</div>

</div>
.chid{
​font-size:2em;
}
.chid2{
​font-size:2em;
}
.chid3{
​font-size:2em;
}
  • child1的font-size 是 16px *2 =32px
  • child2的font-size 是 16px *2 *2=64px
  • child3的font-size 是 16px *2 *2=128px

如果字體大小使用em的話,從上面的例子可以看到兩點

1.字體會一層層的累乘,進而讓內層的字體變得超大或是超小(如果乘的是小數的話)

2.內層的字體大小會受到所有外層的影響,難以控制。

這麼看來,對字體大小使用em真的不是個好點子。難道我們要回頭用px嗎?

當然不是,我們還有rem可以使用。

2.rem

不論使用在字體大小或是間距,其基準都是根元素(也就是html)。

現在來讓我們來將上個例子改成rem

<div class="parent">
父層​
<div class="child">
子元素​
<div class="child2">
子元素​2
<div class="child3">
子元素​3
</div>
</div>
</div>

</div>
.chid{
​font-size:2em; /*改成rem*/
}
.chid2{
​font-size:2em;/*改成rem*/
}
.chid3{
​font-size:2em;/*改成rem*/
}
  • 不論是child、child2、child3,其font-size都是 16px*2 =32px


比起em,rem更適合用於設定字體的大小。這也導出了個第一項原則:

使用rem來設定font-size


相對單位(relative units)在Responsive Layout的應用

在前面介紹相對單位(relative units)-em與rem,你一定在想,這個跟Responsive Layout有甚麼關係?為何我不能單單純純的用px,px不偷也不搶,為甚麼Responsive Layout要這麼歧視她

這裡KP用了兩個應用來展現了相對單位(relative units)的威力。

1.配合media Query與rem來一鍵調整不同螢幕大小的font-size

<div class="parent">
父層​
<div class="child">
子元素​
</div>
<div class="child">
子元素​2
</div>

</div>
.chid{
​font-size:2rem;
padding: 1em;
margin:2em;

}
@media only screen and (max-width: 600px){/*Big smartphones [426px -> 600px]*/
​html{
font-size:12px
}
}


}

在max-width: 600px的media Query中,重設html的font-size為12px,這一次連動改變了兩個子元素的

  • ​font-size:從原本的16px*2變成12px*2 =24px
  • padding:從原本的16px*1變成12px*1=12px
  • margin:從原本的16px*2變成12px*2=24px


如果都使用相對單位的話,我們可以透過更改html的font-size來一次修改所有元素的font-size與間距。

2.使用em來一次設計各式大小的按鈕

<button class="btn btn1">
按鈕1
</button>

<button class="btn btn2">
按鈕2
</button>
.btn{
padding:2em 3em; /*長寬為3:2*/
}
.btn1{
font-size:0.5rem;
}
.btn2{
font-size:1.5rem;
}
  • 先用btn的共用class 來用em來設置padding。em會相對於元素的font-size縮放
  • 用btn1的特定class來設置第一個按鈕的font-size為0.5rem。其padding會隨著font-size大小而縮小,且比例維持一樣。產生一個等比例的小按鈕。
  • 用btn2的特定class來設置第一個按鈕的font-size為1.5rem。其padding會隨著font-size大小而縮大,且比例維持一樣。產生一個等比例的大按鈕。
raw-image


由於相對單位可以更有效率的設置不同螢幕下的元素大小,所以又導出第二項原則

不要使用px,用em或rem


總結

這就是今天相對單位的內容了,記得兩項原則

1.單位不要使用px,用em或rem

2.使用rem來設定font-size

歡迎來到我的部落格!這裡是一個分享前端開發、貓咪寫真以及與菲律賓女友生活的文化衝擊與英文學習的個人空間。我熱愛前端技術,喜歡追求最新的網頁開發趨勢,並將這些知識分享給大家。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
網頁中的元素本來都是Responsive的,是因為我們做了些什麼,才讓元素變成不是Responsive
網頁中的元素本來都是Responsive的,是因為我們做了些什麼,才讓元素變成不是Responsive
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
Thumbnail
量詞的重要性 “請給我一把刀vs請給我一刀”少了一個量詞,意義就差異極大,在生活中,有些孩子對量詞的使用方式,無法真正理解,只能靠背誦或靠公式,其實只要讓孩子了解前因後果,就可幫著孩子使用量詞,量詞幫助孩子練習量感和量詞的用法,這是數學基礎中最重要的能力之一。 https://www.you
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
Thumbnail
今天的功課,說多也不多 國語大部分是訂正錯字 但數學來問的怎麼都是那幾題?@@ 連頁數都一模模一樣樣 莫非你們全部都卡在J邊? 勞絲今天不是代課也不是扶助教學 但是也太多人來問惹......... 只好拿起白板筆:你們是不是都卡在這個周長和面積? 畫了兩個圖給他們,周長和面積。 然後:
Thumbnail
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
在 CSS 的開發過程中,重複使用如顏色、字體大小等值是常見的需求。為了提高程式碼維護性和靈活性,就需要用到 CSS 變量了,CSS 變量可以讓你在樣式表中儲存可重用的值。本文將介紹 CSS 變量的概念、使用方法,以及它對撰寫 CSS 的影響。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
Thumbnail
量詞的重要性 “請給我一把刀vs請給我一刀”少了一個量詞,意義就差異極大,在生活中,有些孩子對量詞的使用方式,無法真正理解,只能靠背誦或靠公式,其實只要讓孩子了解前因後果,就可幫著孩子使用量詞,量詞幫助孩子練習量感和量詞的用法,這是數學基礎中最重要的能力之一。 https://www.you
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
Thumbnail
今天的功課,說多也不多 國語大部分是訂正錯字 但數學來問的怎麼都是那幾題?@@ 連頁數都一模模一樣樣 莫非你們全部都卡在J邊? 勞絲今天不是代課也不是扶助教學 但是也太多人來問惹......... 只好拿起白板筆:你們是不是都卡在這個周長和面積? 畫了兩個圖給他們,周長和面積。 然後:
Thumbnail
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
在 CSS 的開發過程中,重複使用如顏色、字體大小等值是常見的需求。為了提高程式碼維護性和靈活性,就需要用到 CSS 變量了,CSS 變量可以讓你在樣式表中儲存可重用的值。本文將介紹 CSS 變量的概念、使用方法,以及它對撰寫 CSS 的影響。