首页 > 技术文章 > css3单位em,rem,px,vw,vh等

olive27 2017-03-21 11:04 原文

昨天发现了个好用的方法去设置手机端的rem单位,在这里记录下。

html{
  font-size:calc(100vw/7.5);
}

这是按照750的设计稿(也就是iphone6的设计稿)。

100vw是设备的宽度,除以7.5可以让1rem的大小在iPhone6下等于50px。

替换页面中的单位,把所有的px单位替换成rem,除以100,比如某字体大小在设计稿上是36px,就是0.36rem。

在iPhone6下,所有元素的尺寸还是和视觉稿的尺寸一样,而iphone5/iphone6plus中,因为设备的宽度变小/变大了,100vw/7.5得到的值,会相应的变小、变大,即rem的单位值会变,页面中所有的尺寸会等比例缩放。

so,这样就做到l了针对不同分辨率的设备保持视觉一致了。

but,vw单位,在低版本的设备可能不支持,那就需要用js来处理一下:

document.documentElement.style.fontSize = window.innerWidth/3.75 + 'px'

ps:之所以让1rem等于50px,而不是1rem等于1px,是因为在chrome下针对中文的最小字体是12px。

下面介绍下css的各种单位:

css单位

px:绝对单位,页面按精确像素展示

em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。

ps:chrome的最小字体大小是12px,小于12则按照12来算,所以要注意一下哦

顺带给出让chrome字体小于12px的方法:

.font-small{
  font-size: 12px;
   *font-size:9.6px;//为了兼容ie67
   -webkit-transform-origin-x: 0;
   -webkit-transform: scale(0.80);
}

利用css3的缩放属性,其最终大小就是:12px * 0.8 = 9.6px;

css3新增单位

rem:相对单位,可理解为”root em”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9+支持。

vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%。

vh:viewpoint height,视窗高度,1vh等于视窗高度的1%。

vmin:vw和vh中较小的那个。

vmax:vw和vh中较大的那个。

这几种单位(除了rem)的支持性:基本支持所有主流浏览器,ie必须是ie10+。

推荐阅读