通过设定html根标签的font-size值,控制rem来达到全局布局的自适应的,CSS长度单位全部通过rem设定

必须在head在中引入不可以延迟引入;

  1. (function (doc, win) {
  2. // 分辨率Resolution适配
  3. var docEl = doc.documentElement,
  4. resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
  5. recalc = function () {
  6. var clientWidth = docEl.clientWidth;
  7. if (!clientWidth) return;

      if(clientWidth>=750){//屏幕最大宽度设定值
        docEl.style.fontSize = '100px';
      }else if(clientWidth>320&&clientWidth<750){
        docEl.style.fontSize = 100 * (clientWidth/ 750) + 'px';
      }else{//最小屏幕设定值
        docEl.style.fontSize = 100 * (320 / 750) + 'px';
      }

  1. };
  2.  
  3. // Abort if browser does not support addEventListener
  4. if (!doc.addEventListener) return;
  5. win.addEventListener(resizeEvt, recalc, false);
  6. doc.addEventListener('DOMContentLoaded', recalc, false);
  7.  
  8. // 一物理像素在不同屏幕的显示效果不一样。要根据devicePixelRatio来修改meta标签的scale,要注释上面的meta标签
  9. (function(){
  10. return;
  11. var dpr = scale =1;
  12. var isIPhone = win.navigator.appVersion.match(/iphone/gi);
  13. var devicePixelRatio = win.devicePixelRatio;
  14. if (isIPhone) {
  15. // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
  16. if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
  17. dpr = 3;
  18. } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
  19. dpr = 2;
  20. } else {
  21. dpr = 1;
  22. }
  23. } else {
  24. // 其他设备下,仍旧使用1倍的方案
  25. dpr = 1;
  26. }
  27. scale = 1 / dpr;
  28.  
  29. //
  30. var metaEl = "";
  31. metaEl = doc.createElement('meta');
  32. metaEl.setAttribute('name', 'viewport');
  33. metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
  34. if (docEl.firstElementChild) {
  35. docEl.firstElementChild.appendChild(metaEl);
  36. } else {
  37. var wrap = doc.createElement('div');
  38. wrap.appendChild(metaEl);
  39. doc.write(wrap.innerHTML);
  40. }
  41. })();
  42.  
  43. })(document, window);

关于rem的自定义HTML比例设定的更多相关文章

  1. rem适配布局(rem+less+媒体查询 和 rem+flexible.js)

    1. rem 基础 rem 是一个相对单位,类似于 em ,em 是父元素字体大小. em 是相对于父元素  的字体大小来说的 rem 是相对于 html 元素 字体大小来说的 rem 优点 就是可以 ...

  2. rem与px的相爱相杀

    rem 简介:为元素设定字体大小:相对大小:只相对HTML根元素. 优点:只修改根元素就可以成比例调整所有字体的大小. bug:IE8及更早版本不兼容. hack:多写一个绝对单位px的声明,不兼容版 ...

  3. C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  4. rem自适应布局的回顾总结

    使用rem实现自适应布局,应该算是当前移动前端的一大趋势,有些人对此还有点迷惑,搞不懂rem是如何实现自适应布局,如何根据设计稿来调整rem的值?rem布局如何用雪碧背景图片?rem一定要加载JS吗? ...

  5. 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  6. Web移动端页面 --响应式和动态REM

    响应式 什么是响应式页面呢? 顾名思义响应式页面就是能做出响应的页面,它的页面效果不是定死的,会随着用户的改变而改变. 如何着手响应式有以下几个思考的方向 找一份设计图 使用Media Query 隐 ...

  7. 【转】rem自适应布局

    rem自适应原理 rem是根据html的font-size大小来变化,正是基于这个出发,我们可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现了自适应布局.更多介绍请看这篇文章:rem是 ...

  8. Salesforce自定义权限简介

    自定义权限(Custom Permission) Salesforce默认提供了多种方式设定用户的权限,比如简档.权限集等.在这些设定中,已经包括了系统中的对象.应用.字段.页面布局等组件,管理员或开 ...

  9. 3分钟读懂移动端rem使用方法

    1.为什么要用rem 博客很久没写了,原因很简单. 最近接手了一个项目,要同时做PC和移动端的页面,之前没接触过,但毕竟给钱的是大爷,所以还是硬着头皮上了. 移动端最麻烦的是什么? 不同分辨率适配! ...

随机推荐

  1. Android之NDK开发(转)

    Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第 ...

  2. 基于SQL Server 2008 Service Broker构建企业级消息系统

    注:这篇文章是为InfoQ 中文站而写,文章的地址是:http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroke ...

  3. c语言函数, 函数调用及函数递归

    1. 函数的定义: 返回值类型 函数名(形参列表) {函数体(函数的实现内容)}, 注意: 如果没有参数, 小括号也是必不可少的.  函数与函数之间可以嵌套调用(也就是在一个函数内部可以调用另外一个函 ...

  4. Win8 传统桌面下无法上网的解决方法

    Win8 很酷,就连出现的问题也都酷得不行~ 之前遇到的一些问题与解决方法,避免重新安装 1. Word 2013下, 输入法突然秀逗, 经常按了一个键后, 死循环输入该字符直到死机 解决方法: 进入 ...

  5. 【PHP】分页条函数封装

    这两天在学习PHP 想做一个前端后台都包含的网站 看了一些视频发现大牛们都是将封装起来实现代码的重用性 本人技拙也写了个分页条函数的封装 分页条在用PHP网站开发中十分常用 通过封装代码来提高网站开发 ...

  6. VisualSVN 4.0.11补丁原创发布

    VisualSVN 4.0.11补丁原创发布 目前是官方最新版本.

  7. EF升级6.0数据库链接不上问题

    昨天搞了个mvc4  先从net4.0 升级4.5后 数据库连接不上了,  然后升级ef未最新的6.1  居然还报错 不到方法:“System.Data.Objects.ObjectContext S ...

  8. C/C++函数调用的几种方式及函数名修饰规则以及c++为什么不允许重载仅返回类型不同的函数

    我们知道,调用函数时,计算机常用栈来存放函数执行需要的参数,由于栈的空间大小是有限的,在windows下栈是向低地址扩展的数据结构,是一块连续的内存区域.这句话的意思是栈顶的地址和栈的最大容量是系统预 ...

  9. Puppet安装及部署

    本篇博客主要介绍Puppet的安装部署,后续会更新其他相关内容 一.简介 二.环境介绍 三.安装Puppet 四.配置Puppet-dashboard 五.配置Puppet Kick 一.简介 Pup ...

  10. win7 安装JDK7和JDK8后,卸载JDK8后出错

    这是本人学习Java过程中遇到的一些问题和解决方法,在此记录,方便本人查看,解决他人疑惑. 本人win7 x64旗舰版,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java - ...