iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

商科生初探網頁全端開發系列 第 14

Day14-CSS絕對(Absolute)單位/相對(Relative)單位

  • 分享至 

  • xImage
  •  

在前幾天的示範中,幾乎都使用像素(px)來定義網頁中各式組成元素的大小,這裡的px其實就是一種絕對單位,只要設定後,頁面上其他尺寸設定都不會影響到它。

常見絕對單位如:px、cm、pt、in、pc、mm等......

然而若在版面上每一物件都使用絕對單位來排版時,一旦要做局部調整維護時,為保持版面和諧,要調整的部分容易牽一髮動全身。換句話說,細部的微調,反而要更動到更多非預期的設定,相當不便利。

https://ithelp.ithome.com.tw/upload/images/20220914/20151031UNOkTtjYSA.png
圖中三塊<div>其大小皆使用px設定,若要更動時便要逐一調整。


為了解決這項不便,可以使用CSS中常見的單位:em

em本身是相對長度單位,其本身的值對應於該元素字體大小屬性(font-size),若皆無特別設定,通常為16px(瀏覽器預設值)
此外,em有項特性,**繼承父元素(Parent Element)**字體大小值以作為參考值基準,實際舉例說明如下圖:
https://ithelp.ithome.com.tw/upload/images/20220914/201510319C7qVr7o1D.png
圖中有4個<div>分別以,祖父、父親、兒子、孫子代稱,其中將祖父的font-size定為10px,其餘class為Family的父親、兒子、孫子之font-size則設定為3em,此處的em參考值即為上層祖父的font-size(10px)
因此各層文字大小如下:
祖父:10px

父親:10px * 3=30px (繼承自祖父)

兒子:30px * 3=90px (繼承自父親)

孫子:90px * 3=270px (繼承自兒子)

如此一來想要調整文字大小時,只要針對"祖父"的font-size調整即可,簡便不少。


再舉一項例子說明em的好處:
https://ithelp.ithome.com.tw/upload/images/20220914/20151031FXFNrBT2Y6.png
https://ithelp.ithome.com.tw/upload/images/20220914/20151031x9dJYsHXs3.png

button1的font-size採絕對單位px;button2則採相對單位em,上圖為初始button大小,下圖為放大字體大小後。
由此例子,不難看出採絕對單位px的button在字體放大後,button的圓弧角效果失真了,反之採相對單位的仍保有原圓弧角設定。


但em並不是沒有缺點,請見以下示範:
https://ithelp.ithome.com.tw/upload/images/20220914/20151031A9Kb3xlYqT.png
圖中菜單採相對單位em作為<ul>的font-size大小,但卻因繼承父元素之特性使得字體大小呈現不如預期。


為了改善上述em的缺點,這裡帶出另一個相對單位rem來解決這類問題:

https://ithelp.ithome.com.tw/upload/images/20220914/201510313dCqWSxXhY.png
rem是相對於根元素<html>的font-size來計算,所以其參照基準是固定的,此處並無特別設定,1rem=瀏覽器預設值16px,如此一來,便能依排版需求決定各物件大小。


小結:雖然rem使用上相當直觀且較易預測其結果,但不代表em就沒有它的舞台,尤其在展示需要同步縮放的情況下em仍然是相當好用的相對單位。


上一篇
Day13-Display Properties
下一篇
Day15-CSS Transition
系列文
商科生初探網頁全端開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言