Rem 适配方案

rem: the font size of root element

简版

document.documentElement.style.fontSize = 
  ((window.innerWidth / designWidth) * rem2px) + 'px'; 
  • 获得屏幕宽度与设计宽度比作为缩放系数,作为rem的基值。
  • 1rem: the font size of root element 即根节点html 的font-size属性。
  • 设定设计稿宽度下的 1rem = 100px;方便设计稿px转换为rem。
  • 视口设置:<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" />

完全版

function adapt(designWidth, rem2px){
  var d = window.document.createElement('div');
  d.style.width = '1rem';
  d.style.display = "none";
  var head = window.document.getElementsByTagName('head')[0];
  head.appendChild(d);
  var defaultFontSize = parseFloat(window.getComputedStyle(d, null).getPropertyValue('width'));
  // d.remove();
  // document.documentElement.style.fontSize = window.innerWidth / designWidth * rem2px / defaultFontSize * 100 + '%';
  var st = document.createElement('style');
  var portrait = "@media screen and (min-width: "+window.innerWidth+"px) {html{font-size:"+ ((window.innerWidth/(designWidth/rem2px)/defaultFontSize)*100) +"%;}}";
  var landscape = "@media screen and (min-width: "+window.innerHeight+"px) {html{font-size:"+ ((window.innerHeight/(designWidth/rem2px)/defaultFontSize)*100) +"%;}}"
  st.innerHTML = portrait + landscape;
  head.appendChild(st);
  return defaultFontSize
};
var defaultFontSize = adapt(640, 100);

qs:

参考 https://github.com/hbxeagle/rem/blob/master/README.md

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 了解真实的『REM』手机屏幕适配rem 作为一个低调的长度单位,由于手机端网页的兴起,在屏幕适配中得到重用。 使用...
    张宪宇阅读 2,279评论 0 5
  • 1.meta:vp阻止缩放 2.js获取页面宽度,书写meta 3.body的font-size不能小于12px ...
    曾祥辉阅读 195评论 0 0
  • 1. 简单入门的rem适配方案,纯CSS实现 html{ font-size:20px; } @mediaonly...
    点_ba7a阅读 272评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 掌门魂丹选择的继任者,是凤雪安。 凤雪安,是凤银修的儿子。 唯一的儿子。 缘分真是奇怪至极! 只是凤雪安现在才十岁...
    冬知饺子阅读 355评论 0 0