js动态设置根元素的rem方案

摘要:
200像素;(function(){functionc(){vard=document.documentElement;d.style.fontSize=(20*(cw/375))>false);center;width&&doc.addEventListener(“DOMContentLoaded”;}(document;}*{margin;}<height;

方案需求:

rem 单位在做移动端的h5开发的时候是最经常使用的单位。为解决自适应的问题,我们需要动态的给文档的根节点添加font-size 值。

使用mediaquery 可以解决这个问题,但是每一个文件都引用一大串的font-size 值很繁琐,而且值也不能达到连续的效果。

就使用js动态计算给文档的fopnt-size 动态赋值解决问题。

设计稿以750为准。其中测试的设计稿中标注此div的750px;height:200px;

方案一:

<script type="text/javascript">
  window.addEventListener(('orientationchange' in window ? 'orientationchange' : 'resize'), (function() {
    function c() {
      var d = document.documentElement;
      var cw = d.clientWidth || 750;
      d.style.fontSize = (20 * (cw / 375)) > 40 ? 40 + 'px' : (20 * (cw / 375)) + 'px';
    }
    c();
    return c;
  })(), false);
</script>
<style type="text/css">
  html{font-size:10px}
  *{margin:0;}
</style>
<div style="18.75rem;height:5rem;background:#f00;color:#fff;text-align:center;">
    此时在iPhone6上测试,375px,也即100%。
  此时 1rem = 40px;将设计稿标注的宽高除以40即可得到rem的值。 </div>

方案二:

<script type="text/javascript">
  !(function(doc, win) {
    var docEle = doc.documentElement, //获取html元素
      event = "onorientationchange" in window ? "orientationchange" : "resize", //判断是屏幕旋转还是resize;
      fn = function() {
        var width = docEle.clientWidth;
        width && (docEle.style.fontSize = 10 * (width / 375) + "px"); //设置html的fontSize,随着event的改变而改变。
      };

    win.addEventListener(event, fn, false);
    doc.addEventListener("DOMContentLoaded", fn, false);

  }(document, window));
</script>
<style type="text/css">
  html {
    font-size: 10px;
  }
  *{
      margin: 0;
  }
</style>
<div style="37.5rem;height:10rem;background:#f00;color:#fff;text-align:center;">
    此时 1rem = 20px;将设计稿标注的宽高除以20即可得到rem的值。
</div>

write by tuantuan

免责声明:文章转载自《js动态设置根元素的rem方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux学习之-vsftpsqlserver 多行转一行下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JavaScript中科学计数法转化为数值字符串形式

原文地址:https://www.css88.com/archives/9318 (受益匪浅) JavaScript 中经常会碰到数值计算问题,偶尔会在不经意间报一个不是bug的bug。今天来说说一个特殊的例子。我以0.0011BTC 价格买入 0.0002CZR 计算出了的金额是 0.00000022BTC,而 JavaScript 计算出来的金额是 2...

C#中web项目使用log4net日志

  我准备把log4net的实现方法放在一个类库项目中,别的项目直接引用该类库,即可进行日志的记录,操作步骤如下: 1.下载log4net.dll文件 2.在解决方案下创建类库项目 3.把log4net.dll添加到上面创建的类库引用中 4.在web项目下,创建单独的log4net配置文件(当然,也可以写在web.config里),配置文件的内容如下 &...

WPF样式学习第一天

因为上班的公司要我用wpf写软件,刚毕业出来,学校也没教过wpf,只会winform,再加上wpf用winform的框架写法也能实现很多需求,但是就不能体现wpf的优点了,今天就先来学wpf的样式,因为对美的认识不足,所以排版不好,对代码有意见或建议的,希望多多提出,我是初学者。 今天就先弄个Button的简单样式吧 ButtonStyle是源名称。 P...

Maven私服搭建及使用-Windows版

了解有限,目前只针对基础功能介绍,持续更新 一、下载对应的版本(本例版本:nexus-3.7.1-02)   https://www.sonatype.com/download-oss-sonatype 二、启动服务,进入对应安装目录,按住shift右键,打开cmd命令行,执行nexus.exe /run   我的Nexus目录:NEXUS_HOME ex...

学习Maven之Cobertura Maven Plugin

cobertura-maven-plugin是个什么鬼? cobertura-maven-plugin是一个校验单元测试用例覆盖率的工具,可以生成一个测试覆盖率报告,可以给单元测试用例编写提供参考. helloword cobertura-maven-plugin的使用也很简单,首先你要有源码,然后要有对这个源码编写的测试代码,最后在pom.xml中配置上...

文档大师 在Win10 IE11下,文档集画面无法正常显示Word等Office文档的解决方法

在文档集界面中显示Word文档,是文档大师的一个核心功能。 最近在 Win10 升级到最新版后,发现 无法正常显示Office 文档的问题。 一开始以为是Word版本问题,从2007升级到2016,问题仍没解决。 用关键字“ie11 word 显示不全”搜索,看了几个搜索结果,找到了答案:"关闭IE11"。 操作: 1. Win10 控制面板,在卸载软件界...