(function (win,doc){
if (!win.addEventListener) return;
var html=document.documentElement;
function setFont()
{var cliWidth=html.clientWidth;
html.style.fontSize=100*(cliWidth/640)+'px';
}
win.addEventListener('resize',setFont,false)
doc.addEventListener('DOMContentLoaded',setFont,false)
})(window,document);
解读:

  首先,不去鸟不支持事件监听的浏览器(IE6、7、8),当然不写也可以,因为对字号的自适应的需求都是移动端。 
  当出现窗口大小改变的时候给window绑定一个监听,运行一个叫setFont的函数;当页面的Dom结构加载完也运行setFont(或者不监听直接setFont()运行也可以。) 
  setFont函数用来获取屏幕分辨率,然后按比例来设置html的字号。
  我这里是以100px为基础来缩放。为什么是100px?待我细细说明: 
我们一般拿到手的设计稿都是640px的,我们不以手机分辨率为考量,如果单纯1:1还原640px的页面,那么我们的页面根目录的字号就是100px(100*(640/640)=100px),那么那么设计稿上选择一个文案,然后PS告诉我们字号是24px,那么我们就在页面里给这段文案设置成0.24rem,那么640px的页面上字体就是24px啦。 
  然后当我们考虑比如页面是5/5s上看,那么当前页面字号就是50px(100*(320/640)=50px),那么0.24rem会以12px的大小展示出来。而640px宽的设计稿上的24px的字体,在320px的页面下,就是以12px显示的~ 
  这就是为什么要以100px为基础字号,这样页面里量的是24px的字体,我代码里写0.24rem就会自动在页面里以12px显示了~而且它可以在6/6p上以13或者14px的样式展示出来~ 
  那你说,我遇到了奇葩的750px为分辨率的设计稿(比如是iphone6的),那你就把公式改成 100*(cliWidth/750)+px就行(也就是设计稿是多宽,公式里就写多少)。然后设计稿里量的Xpx大小,就写多少0.Xrem~什么分辨率的设计稿都不怕啦

tips:

  100px只是为了让我偷懒不用去换算字体大小的,如果喜欢可以自己订1000px,然后写0.012rem这样。但是不要写像10px这样的基础字号,因为有些浏览器有最小字号的限制,比如设置了页面基础字号是10px,但是实际上最小只认11px,那么2rem的字体,本身是希望以20px显示,可能最后是22px显示的。

用Rem来无脑还原Web移动端自适应的页面的更多相关文章

  1. Web移动端 自适应缩放界面

    在开发App端的网页时,要适配iphone.ipad.ipod.安卓等各种机型,一般是直接使用em.px转em.界面缩放. 本章是通过将界面缩放,等比例显示在各机型上.过程中遇到了些问题和大坑~ 然后 ...

  2. Go语言及Web框架Beego环境无脑搭建

    [原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位w ...

  3. 【原】无脑操作:express + MySQL 实现CRUD

    基于node.js的web开发框架express简单方便,很多项目中都在使用.这里结合MySQL数据库,实现最简单的CRUD操作. 开发环境: IDE:WebStorm DB:MySQL ------ ...

  4. 【原】无脑操作:eclipse + maven搭建SSM框架

    网上看到一些Spring + Spring MVC + MyBatis框架的搭建教程,不是很详细或是时间久远了,自己动手整一个简单无脑的! 0.系统环境 1)Windows 10 企业版 2)JDK ...

  5. 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础授权权限

    上一篇<[原]无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限>介绍了实现Shiro的基础认证.本篇谈谈实现 ...

  6. 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限

    开发环境搭建参见<[原]无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页> 需求: ① 除了登录页面,在地址栏直接访问其他 ...

  7. 无插件纯web 3D机房 (第四季:大型园区、地球仪效果和其他扩展应用)

    前言 初次见面的朋友们大家好,这篇文章是"无插件纯web 3D机房"系列的第四季,感兴趣的朋友可从头开始观看,以下是正确的阅读顺序: 无插件纯web 3D机房(第一季:从零开始搭建 ...

  8. 计蒜客 无脑博士 bfs

    题目链接无脑博士的试管们 思路:直接模拟倒水过程即可,但是需要记忆判断当前的情况是否已经处理过.dfs和bfs都ok AC代码 #include <cstdio> #include < ...

  9. CodeForces 909E Coprocessor(无脑拓扑排序)

    You are given a program you want to execute as a set of tasks organized in a dependency graph. The d ...

随机推荐

  1. .net Socket编程

    1.         什么是TCP/IP.UDP?2.         Socket在哪里呢?3.         Socket是什么呢?4.         你会使用它们吗? 什么是TCP/IP.U ...

  2. lua面向对象铺垫

    Account = { balance = , withdraw = function(self, v) self.balance = self.balance - v end } --:操作符隐藏了 ...

  3. python高级语法进阶

    python中几个比较难懂概念进阶. 迭代器 实现了迭代器协议的容器对象,基于如下两个方法: __next__:返回容器的下一个元素 __iter__:返回迭代器本身 由此可见,如果要自定义一个迭代器 ...

  4. 微信H5支付开发步骤总结

    * 开发步骤: * 1.在微信公众号平台设置授权目录,即jsapi.php所在的目录 * 2.在微信支付平台下载证书,放到cert目录 * 3.在微信支付平台设置API秘钥,同时在WxPay.Conf ...

  5. MAC 脚本批量启动应用

    1.touch batchStart.sh 2. #!/bin/bash cd /xxx open 1.app open 2.app 3.chmod +x batchStart.sh 4.ok

  6. python 局部local和全局global变量

    global和local变量 虽然简单,但是还是记录一下,主要是转载 转载自:http://blog.sina.com.cn/s/blog_436992740102ux8z.html   先看一段代码 ...

  7. action extension添加图标

    最近在做ios的action extension,这里记录一下添加图标的方法. 在Action Extension的target里面的Build Settings,里面的Asset Catalog C ...

  8. dojo 官方翻译 dojo/domReady 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/domReady.html#dojo-domready dom加载完成后,执行. requi ...

  9. 一看就懂的数据库范式介绍(1NF,2NF,3NF,BC NF,4NF,5NF)

    原文:http://josh-persistence.iteye.com/blog/2200644 一.基本介绍 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称 ...

  10. Android OTA在线升级二(升级包编译原理分析) 【转】

    本文转载自:http://blog.csdn.net/huryjiang/article/details/7590015 1 升级包的制作 基本命令: Ø  makeMtk [project[flav ...