背景:
传统的项目开发中,我们只会用到px、%、em这几个单位,它们适用于大部分的项目开发,且拥有比较良好的兼容性;从CSS3开始,浏览器对计量单位的支持又提升到了另外一个境界,新增了rem、vw、vh等一些新的单位,利用这些新的单位可以开发出比较良好的响应式页面,能够适应多种不同分辨率的终端,包括移动设备等。
-
像素(px/pixel),它是页面布局的基础,一个像素表示终端(手机、平板、电脑等)屏幕所能显示的最小的区域,分为CSS像素和物理像素两种类型:
CSS像素:为web开发者提供,在CSS中使用的一个抽象单位。
物理像素:只与设备的硬件密度有关,任何设备的物理像素都是固定的。 -
百分比(%),当浏览器的宽度或者高度发生变化时,通过百分比单位可以使得浏览器中组件的宽和高随着浏览器的变化而变化,从而实现响应式的效果。一般认为子元素的百分比相对于直接父元素。
-
em和rem,它们相对于px更具灵活性,都是相对长度单位,其长度不是固定的,更适用于响应式布局。
em:相对于当前元素font-size的倍数,如果当前元素的font-size未被人为设置,则相对于浏览器的默认字体尺寸(默认16px)。
rem:它是CSS3新增的一个相对单位,相对于html元素的font-size的倍数。
eg:
<!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>
</head>
<style>
* {
margin: 0;
padding: 0;
}
div {
width: 200px;
height: 200px;
background-color: gray;
font-size: 20px;
text-indent: 2em;
}
</style>
<body>
<div>我们进行一个测试我们进行一个测试</div>
</body>
</html>
- vw和vh,它们是与视图窗口有关的单位,也都是相对长度单位。除了vw和vh外,还有vmin和vmax两个相关的单位。
vw:相对于视窗的宽度,1vw=1/100视窗宽度。
vh:相对于视窗的高度,1vh=1/100视窗高度。
vmin:vw和vh中的较小值。
vmax:vw和vh中的较大值。
拓展:
视口!=屏幕大小,视口==浏览器去掉头尾