(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. <button>标签也能提交表单问题

    如何避免<button>标签也能提交表单的问题: 只需加上一个属性:type='button'即可:如<button type="button"> < ...

  2. 让WebRTC支持H264编解码

    近期实验了下怎样让WebRTC支持H264编码.记录下,供有须要的人參考. 说明一下,我是在 Ubuntu Server 14.04 下编译的 WebRTC ,使用 native(C++) api 开 ...

  3. Unity 插件收集(持续更新)

    MGS Machinery Unity绑定机械关节,铰链,机构插件包.    MGS Mechanical Drive 用于绑定场景中的机械驱动器的Unity插件   Unity Wave Propa ...

  4. wxwidget自定义消息处理步骤

    from http://www.cppblog.com/kenlistian/archive/2009/02/06/73096.html 略有修改 wxwidget自定义消息处理步骤 自定义消息处理( ...

  5. java拾遗3----XML解析(三) StAX PULL解析

    使用PULL方式解析XML: Pull是STAX的一个实现 StAX是The Streaming API for XML的缩写,一种利用拉模式解析(pull-parsing)XML文档的API StA ...

  6. Zookeeper数据与存储

    一.前言 前面分析了Zookeeper对请求的处理,本篇博文接着分析Zookeeper中如何对底层数据进行存储,数据存储被分为内存数据存储于磁盘数据存储. 二.数据与存储 2.1 内存数据 Zooke ...

  7. 合理的布局,绚丽的样式,谈谈Winform程序的界面设计

    转载,不错的学习文章 阅读后,起初不太明白,试验了几次后明白了dev的强大.从事Winform开发很多年了,由于项目的需要,设计过各种各样的界面效果.一般来说,运用传统的界面控件元素,合理设计布局,能 ...

  8. URAL 1010 Discrete Function【简单暴力】

    链接:  http://acm.timus.ru/problem.aspx?space=1&num=1010 http://acm.hust.edu.cn/vjudge/contest/vie ...

  9. 【python】-- pymsql 外键

    pymsql 外键 本片是以上一篇pymsql操作MySQL的补充,主要演示pymysql的外键操作使用 一.一对一外键关联 1.示意图 2.一对一外键关联示例 2.1.创建表结构,插入数据 from ...

  10. MySQL登陆数据库

    下面是几种登陆到MySql数据库的登陆方式代码 1mysql -u root -ppassword 2.mysql -u root -p Enter password:password3.mysql ...