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 instanceof,typeof的区别
Mar 24 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
May 24 Javascript
Javascript调用C#代码
Jan 17 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
js判断浏览器类型及设备(移动页面开发)
Jul 30 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
动态更新highcharts数据的实现方法
May 28 Javascript
js带闹铃功能的倒计时代码
Sep 29 Javascript
JS查找字符串中出现最多的字符及个数统计
Feb 04 Javascript
vue webuploader 文件上传组件开发
Sep 23 Javascript
微信小程序实现手指触摸画板
Jul 09 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
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
如何用Python绘制3D柱形图
2020/09/16 Python
python处理写入数据代码讲解
2020/10/22 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
党员自我批评与反省材料
2014/02/10 职场文书
一年级班主任感言
2014/03/08 职场文书
采购求职信
2014/03/17 职场文书
学生安全责任书模板
2014/07/25 职场文书
离婚协议书范本样本
2014/08/19 职场文书
单位在职证明书
2014/09/11 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript