2022-04-24

rem适配

rem是相对于根元素的字体大小的单位,也就是html的font-size大小,浏览器默认的字体大小是16px,所以默认的1rem=16px,我们可以根据设备宽度动态设置根元素的font-size,使得以rem为单位的元素在不同终端上以相对一致的视觉效果呈现。

事实上 rem是把屏幕等分成 指定的份数,以20份为例,每份为 1rem , 1rem 对应的大小就是 rem基准值 ,rem做的就是把 rem基准值 给<html>的 font-size ,所以如果设备的 物理像素 宽为 640px ,分成20份,那么 1rem=640px/20=32px , <html>的 font-size为32px

//这段代码放在head标签里面

(function () {

    var html = document.documentElement;

    function onWindowResize() {

        html.style.fontSize = html.getBoundingClientRect().width / 20 + 'px';

    }

    window.addEventListener('resize', onWindowResize);

    onWindowResize();

})();

当然,你也可以分成30份,40份,60份等等,这个看自己的喜好了

在我们实际切图的时候,对于视觉稿上的元素尺寸换算,只需要元素的 原始的px值(即你量的大小) 除以 rem基准值 即可。例如设计稿的大小为640px, rem基准值 = 640px/20 = 32px ,有个元素的大小你量出来是 140px286px* ,那么换算过来就是:

140px = 140/32 = 4.375rem

286px = 286/32 = 8.9375rem

这样我们就可以用rem来代替像素px了, 而且在所有的移动端都是自适应的

这个方法目前是比较好的适配方法,只是rem在计算时很麻烦,有很多小数,这个时候大家可以试一下用less.js解决rem的小数问题

rem+vw适配

什么是vw和vh?

vw : 1vw 等于视口宽度的1%vh : 1vh 等于视口高度的1%vmin : 选取 vw 和 vh 中最小的那个vmax : 选取 vw 和 vh 中最大的那个

用视口单位度量,视口宽度为100vw,高度为100vh(左侧为竖屏情况,右侧为横屏情况)

例如,在桌面端浏览器视口尺寸为650px,那么 1vw = 650 * 1% = 6.5px(这是理论推算的出,如果浏览器不支持0.5px,那么实际渲染结果可能是7px)

注意:这里的1%是指占视口的1%,而不是我们定义的div的1%

如何利用rem+vw进行屏幕适配呢?我们以设计稿为750px为基准

第一步:设置meta标签

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">

第二步:设置html的font-size大小

html{

    font-size:13.33333333vw

}

为什么 font-size=13.33333333vw?

下面分析下原理吧, 上面我们说了vw表示1%的屏幕宽度,而我们的设计稿通常是750px的,屏幕一共是100vw,对应750px,那么1px就是0.1333333vw,。

同时我们知道rem,rem是相对html元素的字体大小,为了方便计算,我们取html的font-size=100px,通过上面的计算结果1px是0.13333333vw,那么100px就是13.333333vw了

div {

  width: 2rem;

  height:1.37rem;

}

这个时候,使用rem就不用去计算小数了

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

相关阅读更多精彩内容

  • 一、屏幕适配问题 解决方案 流式布局 :就是百分比布局,非固定像素,内容像两侧填充,理解成流动的布局,称为流式布局...
    你带来了我的快乐阅读 248评论 0 1
  • 一、使用真实手机测试未发布网页的方法 方法① 在虚拟机中搭建xampp,将文件通过FTP传到虚拟机,在一个局域网中...
    fastwe阅读 819评论 0 0
  • 做前端开发的,肯定就要学会适配页面的大小。那么适配页面是什么呢?适配页面说的就是同样的布局,在不同大小的屏幕上怎么...
    秋风_bdfd阅读 443评论 0 0
  • 适配 在不同尺寸的移动设备上, 页面相对性的达到合理的展示(自适应), 或者保持同一效果的等比缩放(看起来差不多)...
    Veycn阅读 1,773评论 0 0
  • 一.视口(viewport) viewport视口 viewport是严格的等于浏览器的窗口。viewport与跟...
    绘生活文创空间阅读 2,012评论 0 0

友情链接更多精彩内容