px:像素 相對長度機關,相對于顯示器螢幕分辨率(推薦使用)
em:相對長度機關 基準點為父節點字型的大小,如果自身定義了font-size按自身來計算(浏覽器預設字型是16px),整個頁面内1em不是一個固定的值。
rem:相對機關 可了解為”root em”, 相對根節點html的字型大小來計算,CSS3新加屬性,chrome/firefox/IE9+支援。
vw:viewpoint width,視窗寬度,1vw等于視窗寬度的1%。
vh:viewpoint height,視窗高度,1vh等于視窗高度的1%。
vmin:vw和vh中較小的那個。
vmax:vw和vh中較大的那個。
%:百分比
in:寸
cm:厘米
mm:毫米
pt:point,大約1/72寸
pc:pica,大約6pt,1/6寸
在css機關中,可以分為長度機關、絕對機關,如下表所訓示
CSS機關 | |
相對長度機關 | em、ex、ch、rem、vw、vh、vmin、vmax、% |
絕對長度機關 | cm、mm、in、px、pt、pc |
1.px
px,表示像素,所謂像素就是呈現在我們顯示器上的一個個小點,每個像素點都是大小等同的,是以像素為計量機關被分在了絕對長度機關中。有些人會把px認為是相對長度,原因在于在移動端中存在裝置像素比,px實際顯示的大小是不确定的。這裡之是以認為px為絕對機關,在于px的大小和元素的其他屬性無關。
<style>
.box{
width: 200px;
height: 200px;
background-color: #ccc;
}
</style>
<body>
<div class="box"></div>
</body>
2.em
em是相對長度機關。相對于目前對象内文本的字型尺寸。如目前對行内文本的字型尺寸未被人為設定,則相對于浏覽器的預設字型尺寸(1em = 16px)。為了簡化 font-size 的換算,我們需要在css中的 body 選擇器中聲明font-size= 62.5%,這就使 em 值變為 16px*62.5% = 10px。這樣 12px = 1.2em, 10px = 1em, 也就是說隻需要将你的原來的px 數值除以 10,然後換上 em作為機關就行了。
特點:
- em 的值并不是固定的
- em 會繼承父級元素的字型大小
- em 是相對長度機關。相對于目前對象内文本的字型尺寸。如目前對行内文本的字型尺寸未被人為設定,則相對于浏覽器的預設字型尺寸
- 任意浏覽器的預設字型高都是 16px
舉個例子:
<div class="big">
我是14px=1.4em<div class="small">我是12px=1.2em</div>
</div>
<style>
html {font-size: 10px; } /* 公式16px*62.5%=10px */
.big{font-size: 1.4em}
.small{font-size: 1.2em}
</style>
這時候.big元素的font-size為14px,而.small元素的font-size為12px
3.rem
rem參考物是相對于根元素,我們在使用時可以在根元素設定一個參考值即可,相對于em使用,減少很大運算工作量,例:html大小為10px,12rem就是120px
這樣頁面中1rem=10px、1.2rem=12px、1.4rem=14px、1.6rem=16px;使得視覺、使用、書寫都得到了極大的幫助
html {font-size: 62.5%; } /* 公式16px*62.5%=10px */
在根标簽font-size為 16px 下,1rem=16px ,80px=5rem
<style>
html {
font-size: 16px;
}
.box1 {
width: 5rem;
height: 10rem;
background-color: #ccc;
}
.box2 {
width: 80px;
height: 160px;
background-color: #333;
}
</style>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>

- rem機關可謂集相對大小和絕對大小的優點于一身
- 和em不同的是rem總是相對于根元素,而不像em一樣使用級聯的方式來計算尺寸
4.%
% 是相對于父元素的大小設定的比率,position:absolute;的元素是相對于已經定位的父元素,position:fixed;的元素是相對可視視窗
5.vm
vm相對于視口的寬度。視口被均分為100機關
h1 {
font-size: 8vw;
}
再舉個例子:浏覽器寬度1200px, 1 vw = 1200px/100 = 12 px
這裡的視窗分成幾種情況:
- 在桌面端,指的是浏覽器的可視區域
- 移動端指的就是布局視口
像vw、vh,比較容易混淆的一個機關是%,不過百分比寬泛的講是相對于父元素:
- 對于普通定位元素就是我們了解的父元素
- 對于position: absolute;的元素是相對于已定位的父元素
- 對于position: fixed;的元素是相對于 ViewPort(可視視窗)
6.vh
h1 {
font-size: 8vh;
}
再舉個例子:浏覽器高度900px, 1 vh = 900px/100 = 9 px
總結:
1.vw:1vw等于視口寬度的1%。
2.vh:1vh等于視口高度的1%。
但是使用起來相容性很差,還是不推薦使用,目前用的很舒服的還是px和rem,
要麼用vw,要麼用vh, 兩者不要混着用,會出問題
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box1 {
width: 10vw;
height: 10vw;
background-color: #ccc;
margin: 5vw auto;
}
.box2 {
width: 10vh;
height: 10vh;
background-color: pink;
margin: 5vh auto;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>
vw适配 效果
vh适配效果
7、rpx
- rpx是微信小程式獨有的、解決螢幕自适應的尺寸機關
- 可以根據螢幕寬度進行自适應,不論大小螢幕,規定螢幕寬為 750rpx
- 通過 rpx 設定元素和字型的大小,小程式在不同尺寸的螢幕下,可以實作自動适配
rpx 和 px之間的差別:
- 在普通網頁開發中,最常用的像素機關是px
- 在小程式開發中,推薦使用 rpx 這種響應式的像素機關進行開發
設計師在出設計稿的時候,出的都是二倍圖,也就是說如果在這個設計稿上有一個寬高為 200px 的盒子,那麼它最終畫到頁面上實際上是一個寬高為 100px 的盒子,那麼再換算成 rpx 需要乘以 2 ,就又變成了 200rpx ,跟設計稿上的數字是一樣的,是以我們可以保持數字不變,直接将機關 px 替換成 rpx
em與px換算
任意浏覽器的預設字型高度16px(16像素)。所有未經調整的浏覽器都符合: 1em=16px。那麼12px=0.75em,10px=0.625em。為了簡化font-size的換算,需要在css中的body選擇器中聲明font-size=62.5%,這就使em值變為 16px*62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說隻需要将你的原來的px數值除以10,然後換上em作為機關就行了。
移動端螢幕為750px
那麼: 100vw = 750px
是以1vw就等于:1vw =750px/100vw = 7.5px
注意現在1vw等于 7.5px,而我們的1rem是16px (預設情況下 根元素字型大小為16px)
現在進行計算:1rem = 16px/7.5px = 2.133vw
相反:1vw = 7.5px/16px = 0.469rem
上面的計算公式計算同樣也可以逆向思考下: 同理,移動端螢幕大小為750px
我們計算1px等于多少vw: 1px = 100/750 = 0.1333vw
顯示1px=0.1333vw
現在進行計算:1rem= 0.1333 * 16 = 2.133vw
常見問題:
1、假如使用em來設定文字大小要注意什麼?
注意父元素的字型大小,因為em是根據父元素的大小來設定的。
比如同樣是1.5em,要是父元素是20,那1.5em就是30px.要是父元素是30px,1.5em就是45px(特别是在多重div嵌套裡面更要注意)
2、pc pt ch一般用在什麼場景?
這些我們網頁設計基本上用不到,在排版上會有用處
3、如何使 1rem=10px?
在設定HTML{font-size:62.5%;}即可
4、如果父元素沒有指定高度,那麼子元素的百分比的高度是多少?
會按照子元素的實際高度,設定百分比則沒有效果
總結
「px」
絕對長度機關,來描述一個元素的寬高以及定位資訊
「em」:
相對機關,基準點為父節點字型的大小,如果自身定義了font-size按自身來計算(浏覽器預設16px)em作為字型機關,相對于父元素字型大小;em作為行高機關時,相對于自身字型大小,整個頁面内 1em 不是一個固定的值。
「rem」:
相對機關,可了解為”root em”,相對根節點html的字型大小來計算,CSS3新加屬性,rem作用于非根元素時,相對于根元素字型大小;rem作用于根元素字型大小時,相對于其出初始字型大小。rem布局的本質是等比縮放,一般是基于寬度,試想一下如果UE圖能夠等比縮放,那該多麼美好啊
「vh、vw」:
viewpoint width / viewpoint height,vw 相對于視窗的寬度,vh 相對于視窗的高度,1vw等于視窗寬度的1%
主要用于頁面視口大小布局,在頁面布局上更加友善簡單
對于視口的寬度或高度中較小的那個,使用方法和vh\vm類似
「百分比」:
1% 對不同屬性有不同的含義。 font-size: 200% 和font-size: 2em 一樣,表示字型大小是預設(繼承自父親)字型大小的2倍。 line-height: 200% 表示行高是自己字型大小的 2 倍。 width: 100%表示自己 content 的寬度等于父親 content 寬度的1倍。