px
px是绝对长度固定大小的单位,像素的计算针对(电脑/手机)屏幕的,一个像素就是屏幕上的一个点,即屏幕分辨率的最小单位。
px 也常被称为 CSS 像素,在 PC 中,通常认为 1px 的真实长度是固定的。
常用于: CSS像素 = 物理像素/分辨率
计算方式
-
假设PC 端:750 * 1134的视觉稿: 1 CSS像素 = 物理像素/分辨率 = 750 / 980 =0.76
-
假设移动端(iphone6为例),分辨率为375 * 667:1 CSS像素 = 物理像素 /分辨率 = 750 / 375 = 2
所以 PC 端,一个CSS像素可以用0.76个物理像素来表示,而iphone6中 一个CSS像素表示了2个物理像素。此外不同的移动设备分辨率不同,也就是1个CSS像素可以表示的物理像素是不同的
注意:当浏览器页面缩放时,px 并不能跟随变大
rpx
rpx是微信小程序独有的、解决屏幕自适应的尺寸单位
可以根据屏幕宽度进行自适应,不论大小屏幕,规定屏幕宽为 750rpx
通过 rpx 设置元素和字体的大小,小程序在不同尺寸的屏幕下,可以实现自动适配,rpx是px的两倍,1px = 2rpx
em
相对长度单位,em 是相对于当前元素的父元素的 font-size 进行计算,如果当前元素未设置则相对于浏览器的默认字体尺寸。
<div class="a">A
<div class="b">B
<div class="c">C</div>
</div>
</div>
<style>
.a{ font-size:16px;}
.b{ font-size:2em;} /* 相当于32px */
.c{ font-size:1em;} /* 相当于32px */
</style>
rem
相对长度单位,CSS3 新增的一个相对单位,rem 是相对于根元素(html)的 font-size 进行计算,rem 不仅可设置字体大小,也可以设置元素宽高属性。
<div class="a">A
<div class="b">B
<div class="c">C</div>
</div>
</div>
<style>
html{ font-size:16px;}
.a{ font-size:3rem;} /* 相当于48px */
.b{ font-size:2rem;} /* 相当于32px */
.c{ font-size:1rem;} /* 相当于16px */
</style>
百分比%
通常认为子元素的百分比完全相对于直接父元素:
<div class="a">
<div class="b"></div>
</div>
<style>
.a{ width:200px; height:100px; background-color: aqua; }
.b{ width:50%; height:50%; background-color: blueviolet; }
</style>

需要注意的是,如果设置了top、margin、padding等:
- 子元素的 top 和 bottom 如果设置百分比,则相对于直接非 static 定位(默认定位)的父元素的高度
- 子元素的 left 和 right 如果设置百分比,则相对于直接非 static 定位(默认定位的)父元素的宽度
- 子元素的 padding/margin 如果设置百分比,不论是垂直方向或者是水平方向,都相对于直接父亲元素的 padding/margin ,而与父元素的 height 无关。
vw/vh/vmin/vmax
vw、vh、vmin、vmax 是一种视窗单位,也是相对单位。它相对的不是父节点或者页面的根节点。而是由视窗(Viewport)大小来决定的,单位 1,代表类似于 1%。
视窗(Viewport)是你的浏览器实际显示内容的区域—,换句话说是你的不包括工具栏和按钮的网页浏览器。
描述
- vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%)
- vh:视窗高度的百分比
- vmin:当前 vw 和 vh 中较小的一个值
- vmax:当前 vw 和 vh 中较大的一个值
vmin、vmax 用处、区别
- 做移动页面开发时,如果使用 vw、wh 设置字体大小(比如 5vw),在竖屏和横屏状态下显示的字体大小是不一样的。
- 由于 vmin 和 vmax 是当前较小的 vw 和 vh 和当前较大的 vw 和 vh。这里就可以用到 vmin 和 vmax。使得文字大小在横竖屏下保持一致。
移动端推荐使用(ios8、安卓4.4及以上才完全支持),比rem
总结
- PC端:推荐使用px
- 移动端(H5):vw/vh跟rem都可以,推荐前者,至于原因可自行了解
- 微信端:推荐使用rpx
网友评论