HTML5技术

妈妈再也不用担心我的移动端了:网易和淘宝的rem方案剖析 - 菜鸟先飞1992(5)

字号+ 作者:H5之家 来源:H5之家 2017-03-28 11:01 我要评论( )

我们只需以iPhone6的设计稿( 当前主导的机型 ),750px宽完成一套页面,通过 JS获取当前设备的DPR值并动态设置meta的scale值 。当去到其他设备时,因为我们用的都是rem值,只需要通 过JS动态获得当前的dw,再通过

  我们只需以iPhone6的设计稿(当前主导的机型),750px宽完成一套页面,通过JS获取当前设备的DPR值并动态设置meta的scale值。当去到其他设备时,因为我们用的都是rem值,只需要通过JS动态获得当前的dw,再通过动态获取的dw改变html的font-size值,页面的其他元素也会因为html的改变而进行等比例缩放。

 

淘宝方案关键代码:

    动态设置viewport的scale: 

var scale = 1 / devicePixelRatio; document.querySelector('meta[name="viewport"]').setAttribute('content','initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');

    以上实则只是在动态设置meta的scale

<meta content="initial-scale=scale,maximum-scale=scale, minimum-scale=scale">

    动态设置html的font-size:

document.documentElement.style.fontSize = document.documentElement.clientWidth / 10 + 'px';

——————————————————————————————————我是华丽的分割线———————————————————————————————————

对比网易与淘宝的解决方案:

 

共同点:

      1.都是先根据设计稿,按设计稿原始尺寸完成整套页面,然后采用rem转换实现一稿解决所有适应。

    2.都需要动态设置html的font-size属性,但公式不同。

    3.布局时各元素的尺寸值都是根据设计稿标注的尺寸计算出来,由于html的font-size是动态调整的,所以能够在不同的设备等比变化。

    4.容器元素的font-size都不用rem,需要额外做font-size的媒体查询。

 

不同点:

    1.网易通过设置meta,控制视口宽度为设备宽度,让页面以1:1比例渲染;

     淘宝通过动态设置meta的scale,把视口宽度控制为设备的真实设计稿宽度。

    2.运算公式不同:

            html的font-size运算:

                    网易:

 

                    淘宝:

 

               rem的转换:

                  网易:把各元素按设计稿的px值除去100转换为rem;

                  淘宝:各元素rem=设计稿对应px值/html的font-size;

 

     3.解决思路不同:

            网易:把750px的页面等比例转换,压缩在375px的设备显示;

            淘宝:把750px的页面放到虚拟的750px视口渲染打开,再透过375px的设备查看页面。

 

备注:本案例分析统一以Iphone6为设计原稿。

 

  以上就是博主对于移动开发rem使用的一些个人浅见啦,希望能对大家有所帮助吧,说得不好的地方也劳烦各位大神不吝赐教o(╯□╰)o。

 

如果你不知道什么是rem:请点击飞机票;

如果你对于移动web完全没概念: 请点击飞机票1  请点击飞机票2

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 微信小程序体验(2):驴妈妈景区门票即买即游 - 腾讯攻城师lee

    微信小程序体验(2):驴妈妈景区门票即买即游 - 腾讯攻城师lee

    2017-01-08 08:02

  • 不用asp.net MVC,用WebForm照样可以实现MVC(请看最后一句话) - 杨中科

    不用asp.net MVC,用WebForm照样可以实现MVC(请看最后一句话) - 杨

    2015-12-25 14:27

  • 将BootstrapJS和AngularJS结合使用以及为什么不用jQuery - 数通畅联

    将BootstrapJS和AngularJS结合使用以及为什么不用jQuery - 数通畅联

    2015-12-22 09:51

  • 不用Unity库,自己实现.NET轻量级依赖注入 - Lizon

    不用Unity库,自己实现.NET轻量级依赖注入 - Lizon

    2015-12-02 17:41

网友点评
i