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实现读取txt文档的脚本
Jul 20 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
jQuery 表单验证扩展(四)
Oct 20 Javascript
基于Jquery的动态创建DOM元素的代码
Dec 28 Javascript
jQuery表格行换色的三种实现方法
Jun 27 Javascript
from表单多个按钮提交用onclick跳转不同action
Apr 24 Javascript
提交按钮的name='submit'引起的js失效问题及原因
Feb 25 Javascript
动态更新highcharts数据的实现方法
May 28 Javascript
TinyMCE汉化及本地上传图片功能实例详解
May 31 Javascript
Ionic快速安装教程
Jun 03 Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
非常重要的php正则表达式详解
2016/01/04 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
PHP中串行化用法示例
2016/11/16 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
详解python中requirements.txt的一切
2017/03/03 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
助人为乐表扬信范文
2014/01/14 职场文书
小露珠教学反思
2014/04/30 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
活动总结模板大全
2015/05/11 职场文书