移动端适配方案
移动端适配方案有两种,一种主流的rem大法,兼容性好,一种CSS3新的单位vw,兼容性没有rem好,先来介绍一下rem大法
rem移动端适配
参考腾讯前端 AlloyTeam 团队的移动前端适配利器rem
rem意思就是根据网页的根元素来设置字体大小,和em(font size of the element)的区别是,em是根据其父元素的字体大小来设置,而rem是根据网页的跟元素(html)来设置字体大小的.
设置html根元素的font-size。一般浏览器默认的字体大小是16px,rem表示就是1rem,如果想设置为12px,那就是0.75rem 现在默认的基本单位是16px,这是一个不太好计算的值,所以一般我们使用100px作为单位,那么rem的换算就是,100px/16px = 6.25,
viewpoint设置
网易的做法
initial-scale=1.0,maximum-scale=1.0,屏幕不缩放,改变font-size的值。
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">因为设计稿都是按照iphone678来设计的,宽度都是750px,所以通常按照750px的宽度动态计算一下font-size。如果就是针对iphone的,可以将font-size设置为625%。
function initScreen() {
if (!/iphone|ios|android|mobile/i.test(navigator.userAgent.toLowerCase())) {
$('body').css('width', '750px');
}
$('html').css('font-size', ($('body').width() / 750 * 625 + '%'));
}手淘的做法
改变屏幕缩放尺寸,为设备像素比dpr的倒数。dpr=2,initial-scale=0.5,通过meta标签 读取设备宽度。
media查询设置初值
vw适配
vw表示窗口大小,单位为百分比,1vw表示窗口大小的1%。根据设计稿,让那个设计稿的宽度为100%,书写的时候就按照 px/设计稿宽度 * 100vw
方案一: 最简单的方案就是所有的布局元素及属性都用VW来做单位,对应关系是: 设计稿 750px------>100vw 那我们书写时计算:(x/750)*100vw sass:
方案二
1px的问题
原因:css中的1px在移动端上因为设备像素比的原因,并不是1px,会显得比较粗。
解决: 1. 使用border-image。实现准备好1px的border图片, 2. transform: scale(.5)
总结
vw方案目前支持不是很普遍,以后可能会支持比较多,而且使用sass等css预处理器,相对来说比较兼容性不是很好,推荐使用设置font-size,rem作为单位。
Last updated