3分钟读懂移动端rem使用方法(推荐)


Posted in Javascript onMay 06, 2019

1、为什么要用rem

博客很久没写了,原因很简单。

最近接手了一个项目,要同时做PC和移动端的页面,之前没接触过,但毕竟给钱的是大爷,所以还是硬着头皮上了。

移动端最麻烦的是什么?

不同分辨率适配!

具体来说,有的屏幕320px宽,有的屏幕640px宽,有的更宽,如果你写固定px,那么要么小的放不下,要么大的有大片空白。

怎么办?

如果元素固定占用屏幕空间(一般是指宽度而非高度,下同)的百分之xx就ok了。

比如320px的10%是32px,640px的10%是64px,

如果10个10%宽度的元素放在一起,那肯定就是100%,即挤满屏幕(宽度),不会超出,也不会留白。

简单理解:
rem 就是指屏幕宽度的百分之x;
或者说,n个rem = 用户可视区域100%宽度

注意,之所以不说高度,是因为宽度(x轴)满了后,y轴(高度)方向的内容可以通过滚动屏幕来查看

上实例:

1、设计师给一个640px宽度的设计图,

2、你假定64rem=100%宽度(这里是640px),那么1rem=10px;

3、你照着写出了静态页面,然后按照1rem=10px的比例,将设计图上的元素的大小,全部用rem写下;

4、完美,你写的静态页面在640px宽度的页面上正常展示了;

5、A用户使用的是320px宽度的手机,因为你假设64rem=100%宽度,因此此时1rem=5px(320/64=5),于是也完美展示了;

2、rem怎么用?

rem是css单位;
1rem的大小是通过html下的font-size这个css属性告诉浏览器的;
使用替换px所在的位置即可
假定你预设在设计稿的时候 1rem = 10px;

然后一个元素(class=”ele”)的宽度是20px,高度30px(设计稿),

那么你的css这么写就可以了;

html {
  font-size: 10px;
}

.ele {
  width: 2rem;
  height 3rem;
}

3、在任何分辨率下都适用

发现问题在哪里了么?如何确认1rem等于多少px?

原因是rem是css中使用的单位,css是不会帮你计算1rem是多少px的,只能通过你自己来计算。

计算方式很简单,简单来说:

1、你有一个设计稿A(假定640px),有一个预设的rem和px的比例B(假如是1rem = 10px)

2、获取用户浏览器的可视区域的宽度C(假如是320px),那么他此时1rem的尺寸D 可以根据 B/A = D/C 这个公式得知

3、原因是你假定屏幕可以容纳多少个rem,这是一个固定比例(如这里就是64rem)

1 rem = B / A * C;
//代入可得
1 rem = 10px / 640px * 320px = 5px;

4、其他

1、用户加载完后,你就得设置好1rem的尺寸吧(记得是设置在html元素下的font-size);

2、假如用户屏幕的尺寸会变,你肯定得考虑吧(刷新1);

3、你懒得去找相应的代码,我总得给你吧(如下);

var fun = function (doc, win) {
  var docEl = doc.documentElement,
    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
    recalc = function () {
      var clientWidth = docEl.clientWidth;
      if (!clientWidth) return;

      //这里是假设在640px宽度设计稿的情况下,1rem = 20px;
      //可以根据实际需要修改
      docEl.style.fontSize = 20 * (clientWidth / 640) + 'px';
    };
  if (!doc.addEventListener) return;
  win.addEventListener(resizeEvt, recalc, false);
  doc.addEventListener('DOMContentLoaded', recalc, false);
}
fun(document, window);

直接执行即可

以上所述是小编给大家介绍的rem使用方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 简练的几个函数
Aug 29 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
Aug 31 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
javascript验证form表单数据的案例详解
Mar 25 Javascript
js判断非127开头的IP地址的实例代码
Jan 05 Javascript
JavaScript实现消消乐的源代码
Jan 12 Javascript
Vue动态组件和异步组件原理详解
May 06 #Javascript
微信小程序按钮点击跳转页面详解
May 06 #Javascript
详解vue中移动端自适应方案
May 05 #Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
May 05 #Javascript
彻底揭秘keep-alive原理(小结)
May 05 #Javascript
angular4+百分比进度显示插件用法示例
May 05 #Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
May 05 #Javascript
You might like
php 动态多文件上传
2009/01/18 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
python实现中文转换url编码的方法
2016/06/14 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Django实现学员管理系统
2019/02/26 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
基于Python实现简单学生管理系统
2020/07/24 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
《春天来了》教学反思
2014/04/07 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
TS 类型兼容教程示例详解
2022/09/23 Javascript