2019-08-08-Rem的使用

接上篇。

1、为什么要用rem?

移动端最麻烦的是什么?

不同分辨率适配!

具体来说,有的屏幕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这么写就可以了;

?

1

2

3

4

5

6

7

8

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

2

3

1 rem = B / A * C;

//代入可得

1 rem = 10px / 640px * 320px = 5px;

4、其他

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

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

varfun = function(doc, win) {

  vardocEl = doc.documentElement,

    resizeEvt = 'orientationchange'inwindow ? 'orientationchange': 'resize',

    recalc = function() {

      varclientWidth = 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);

直接执行即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概...
    Vivian_06e6阅读 2,865评论 0 1
  • 今天是来高博学习的第23天 今天研究了flex布局 以及如何去设置大小??? pt、px、em、rem用法和特点、...
    RyuukoGYC阅读 1,405评论 0 0
  • 一、使用真实手机测试未发布网页的方法 方法① 在虚拟机中搭建xampp,将文件通过FTP传到虚拟机,在一个局域网中...
    fastwe阅读 4,055评论 0 0
  • 定义/婊:是一个女人对另一个女人的羡慕,却又无法用任何形式超越,从而以语言词汇的形式来表达内心嫉妒情感的方式。 特...
    A调阅读 1,751评论 1 2
  • 早晨儿子去上学了,我跟孩子爸爸在家闲来无事决定对闺女去省博物馆看看,这是闺女第二次去了,第一次去的时候她...
    无敌妈妈阅读 1,796评论 0 0

友情链接更多精彩内容