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 相关文章推荐
js constructor的实际作用分析
Nov 15 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
Dec 29 Javascript
AngularJS入门教程中SQL实例详解
Jul 27 Javascript
微信小程序 二维码canvas绘制实例详解
Jan 06 Javascript
angularjs点击图片放大实现上传图片预览
Feb 24 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
使用vue-cli导入Element UI组件的方法
May 16 Javascript
JS中Promise函数then的奥秘探究
Jul 30 Javascript
vue+element实现动态加载表单
Dec 13 Vue.js
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
使用adodb lite解决问题
2006/12/31 PHP
php实现插入排序
2015/03/29 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
浅析Python中else语句块的使用技巧
2016/06/16 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
python微信公众号开发简单流程
2018/03/23 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Python中函数参数匹配模型详解
2019/06/09 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
想学画画?python满足你!
2020/12/24 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
职专应届生求职信
2013/11/16 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
珍爱生命主题班会
2015/08/13 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python