淘宝、网易移动端 px 转换 rem 原理,Vue-cli 实现 px 转换 rem
网易转换rem分析
首先网易的设计稿是基于iPhone5设计的也就是宽度640px。(先不考虑dpr的问题下面会说)然后设置1rem等于100px( HTML font-size为100px),相当于6.4rem = 100%宽度 = 设备的宽度。
由于是基于6.4rem开发。iPhone5 的物理像素是320px(dpr是2.0),如果此时还想让6.4rem等于设备宽度只能调整1rem对应font-size的比例, 320 / 6.4 = 50 让1rem=50px就可以实现。如果想让 iPhone6 适配只需要 1rem = (375 / 6.4) = 58.59375px 就可以实现iPhone6的适配,这个方法可以适配市面上绝大多数的移动端设备。
只需要加下面这句话可以实现我上述效果。
document.documentElement.style.fontSize = document.documentElement.clientWidth / 6.4 + 'px';
淘宝转换rem分析
这次咱们还是拿iPhone5(640px)的设计稿举例,淘宝的思想是无论当前页面多宽,让10rem = 页面宽度 = 100%,所以1rem = 64px 然后通过dpr设置缩放整个页面,以达到高保真的效果。
  iPhone5的宽度是640px,页面最终完成效果也是640px,iPhone的dpr是2,所以设置 <meta name="viewport" content="initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no"> 就可以了适配iPhone5了。当然这些东西lib-flexible都帮我们做好了。我只不过说一下,让好奇的小伙伴知道原理。
Vue-cli配合lib-flexible 实现移动端自适应布局
cnpm intall lib-flexible // 安装lib-flexible
import 'lib-flexible' // 在 src\main.js 中引入 lib-flexible
完成上面代码就相当于实现了rem动态计算了,如果此时在iPhone5上有一个元素是宽150px,高是200px,想计算rem宽是 150/64 = 2.34375rem,高是200/64 = 3.125rem。
至于dpr的缩放问题,那个就不用关心了。lib-flexible已经帮你做好了。你只需要关心px转换rem即可。
使用 px2rem-loader 自动将px转换rem
cnpm intall px2rem-loader // 安装px2rem-loader
在 build\utils.js 修改成下面的代码。
// 在 cssLoaders 方法内添加下列代码
const px2remLoader = {
loader: 'px2rem-loader',
options: {
remUnit: 64 //设计稿宽度/10
}
// 将 cssLoaders 方法内的generateLoaders的方法内的 loaders 变量添加 px2remLoader
const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader, lessLoader ] : [cssLoader, px2remLoader, lessLoader ]
淘宝、网易移动端 px 转换 rem 原理,Vue-cli 实现 px 转换 rem的更多相关文章
- 淘宝H5移动端解决方案
		
详细:http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html ; (function(win, lib) { var doc ...
 - npm、node版本升级与淘宝镜像
		
npm --version == npm -v 查看npm版本 node -v 查看node版本 升级npm版本 npm ...
 - 淘宝购物车页面 PC端和移动端实战
		
最近花了半个月的时间,做了一个淘宝购物车页面的Demo.当然,为了能够更加深入的学习,不仅仅有PC端的固定宽度的布局,还实现了移动端在Media Query为768px以下(也就是实现了ipad,ip ...
 - 阿里开源首个移动AI项目,淘宝同款推理引擎
		
淘宝上用的移动AI技术,你也可以用在自己的产品中了. 刚刚,阿里巴巴宣布,开源自家轻量级的深度神经网络推理引擎MNN(Mobile Neural Network),用于在智能手机.IoT设备等端侧加载 ...
 - 用python分析1225万条淘宝数据,终于搞清楚了我的交易行为
		
大家好,我是黄同学
 - 淘宝接口 TopAPi
		
演示一下调用淘宝的接口,让大家心里有个数, 很简单,新建一个工程,拖一个IDHttp,Button和Memo到窗体上去 然后在这个Button的OnClick事件中写入如下代码: [delphi] v ...
 - 关于django  京东淘宝 混合搜索实现原理
		
混合搜索在各大网站如京东.淘宝都有应用,他们的原理都是什么呢?本博文将为你介绍它们的实现过程. 混合搜索的原理,用一句话来说就是:关键字id进行拼接. 混合搜索示例: 数据库设计: 视频方向: 1 2 ...
 - 妈妈再也不用担心我的移动端了:网易和淘宝的rem方案剖析
		
从博主学习前端一路过来的经历了解到,前端移动开发是大部分从PC端转战移动端的小伙伴都非常头疼的一个问题,这边博主就根据一篇自己看过的移动开发文章来剖析一下网易和淘宝的rem解决方案,希望能够帮助到一些 ...
 - 从淘宝和网易的font-size思考移动端怎样使用rem?
		
最近翻了一下关于移动端的rem的使用,怎样最方便.在读到流云诸葛的一篇关于<从网易与淘宝的font-size思考前端设计稿与工作流>的文章后,来总结一下. 然而根据我以往做移动端web项目 ...
 
随机推荐
- hdu 4788 Hard Disk Drive (水题)
			
题意: Input The first line contains an integer T, which indicates the number of test cases. For each t ...
 - Docker 添加--insecure-registry 私有镜像仓库
			
方法一 [root@k8s-master01]# vi /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --inse ...
 - Win powershell执行策略配置
			
参考连接:https://blog.csdn.net/jeffxu_lib/article/details/84710386 参考连接:http://www.cragsman.org/index.ph ...
 - linux 虚拟网络设备的使用
			
1. linux 常见虚拟网络设备分类 常见虚拟网络设备有:bridge, tun/tap, veth-pairs, macvlan, macvtap等.有一篇博文写的挺好的,图文并茂:虚拟网络设备, ...
 - 『学了就忘』Linux基础命令 — 33、管道符
			
目录 1.管道符介绍 2.管道符应用 (1)例子1: (2)例子2: (3)例子3: 1.管道符介绍 管道符|,也是Shell命令. 管道符的作用是链接多个命令,把命令1的结果作为命令2的操作对象. ...
 - Docker学习:起步篇
			
Docker-概述 学习资源 最好的资源在官网! Docker官方: Docker 官方主页: https://www.docker.com(opens new window) Docker 官方博客 ...
 - Java8新特性之方法引用&Stream流
			
Java8新特性 方法引用 前言 什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口. 可以通过 Lambda 表达式来创建该接口的对象.(若 Lambda 表达式抛出一个受检异常(即:非运行 ...
 - 湖湘杯2020 writeup
			
这个平台中间卡的离谱,卡完过后交了flag分还掉了 Web 题目名字不重要 也算是非预期吧,赛后y1ng师傅也说了因为要多端口环境必须这样配,预期解很难 NewWebsite 后台弱口令admin a ...
 - C# 复制目录及其下文件
			
public static void CopyDirectory(string sourceDirPath, string saveDirPath) { try { if (!Directory.Ex ...
 - Duboo整合SpringBoot超级详细例子(附源码)
			
dubbo3.0整合SpringBoot例子 dubbo新版本(3.0以上)在相对于 dubbo 旧版本(2.5.2.6.2.7),有很多的不相同的地方. 官方文档也说了新版本的特性: https:/ ...