1篇文章搞懂rem

2024-05-15 10:58
文章标签 篇文章 搞懂 rem

本文主要是介绍1篇文章搞懂rem,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公司新来了一个前端同事,对移动端的自适应布局rem单位还不太了解,网上的资料又太多太杂,于是我准备自己写一篇关于rem的文章。

一、需求来源

现在做移动端app或者H5,经常会遇到写固定px后,在换了宽度的屏幕上就会变形,于是大家用flex, 或者%布局,能解决部分问题,还是不满足需求呢,rem就上场了。

二、rem背景介绍
what–是什么?:

rem,它是CSS3中新增加的一个尺寸(度量)单位,它的全称是 font size of the root element (根元素的字体大小),它是一个相对单位,相对于(html)。

how—是怎么工作的?:

根据不同手机屏幕宽度来等比缩放web页面元素的大小。

why—为什么不用其他的?:

兼容性比vh,vw要好很多,所以他目前还是前端的宠儿。

在这里插入图片描述

三、具体怎么用操作

其实用起来非常简单,直接复制下面的代码:html页面直接引入一下,就生效了

(function (doc, win) {var UIPageWidth = 750 // UI给的设计稿的宽度,你的设计稿是多少,就写多少;var rate = 100 // 换算比例,这里写100是为了以后好算,比如,一个元素宽度是100px,就可以写为1rem, 即1px=0.01rem。var html = doc.getElementsByTagName("html")[0],// orientationchange->手机屏幕转屏事件// resize->页面大小改变事件(一边pc端有用)reEvt = "orientationchange" in win ? "orientationchange" : "resize",reFontSize = function () {var clientW = doc.documentElement.clientWidth || doc.body.clientWidth;if (!clientW) {return;}html.style.fontSize = rate* (clientW / UIPageWidth ) + "px";}win.addEventListener(reEvt, reFontSize);// DOMContentLoaded->dom加载完就执行,onload要dom/css/js都加载完才执行doc.addEventListener("DOMContentLoaded", reFontSize);
})(document, window);

总体解释一下上面这段代码:

  1. 在DOM文档加载之后就执行,保证执行的时间点最早(DOMContentLoaded);
  2. html.style.fontSize = rate* (clientW / UIPageWidth ) + “px”;
    移动设备屏幕的宽度clientW / UI设计图提供的设计稿的宽度UIPageWidth (一般提供的UI设计稿为 2 倍屏幕的宽度),乘上换算比例为100,设置为100是为了设置成1的倍数好计算,为什么不把html设置为10倍,因为chrome支持的最小字体为12px 。设置这个结果为html根元素的font-size;
  3. 手动改变页面宽度,自动重新设置html 的fontSize;

举例:iphone6/7/8的屏幕跨度一般为375px ,我们把上面那段js代码加在页面后,用chrome浏览器打开html页面,发现它的fontSize被设置成了50px
iphone6/7/8在这里插入图片描述

切换到iphone Plus, 它的屏幕宽度为414px, 他的fontSize就被设置成了55.2px
iphone Plus在这里插入图片描述

所以,以后设计稿来了,一个元素的高度为10px, 我们在CSS代码中就写 0.1rem,就是10px的效果,并且根据手机屏幕宽度自动等比缩放。

这篇关于1篇文章搞懂rem的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991648

相关文章

一文带你搞懂Python中__init__.py到底是什么

《一文带你搞懂Python中__init__.py到底是什么》朋友们,今天我们来聊聊Python里一个低调却至关重要的文件——__init__.py,有些人可能听说过它是“包的标志”,也有人觉得它“没... 目录先搞懂 python 模块(module)Python 包(package)是啥?那么 __in

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

193篇文章暴揍Flink,这个合集你需要关注一下

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多惊喜 前一段时间我写了一篇:《我们在学习Flink的时候,到底在学习什么?》。 基本上把大多数情况下Flink需要学习的点都照顾到了。 然后重点来了,我整理了一个合集放在了CSDN论坛,根据Flink版本发布过程和知识点,收录了网络上写的比较好的文章,基本覆盖了近100%的Flink的知识点。点击文末的【阅读原文】可以跳转,你有必要收藏一

Flink: 两个递归彻底搞懂operator chain

《2021年最新版大数据面试题全面开启更新》 operator chain是指将满足一定条件的operator 链在一起,放在同一个task里面执行,是Flink任务优化的一种方式,在同一个task里面的operator的数据传输变成函数调用关系,这种方式减少数据传输过程。常见的chain例如:source->map->filter,这样的任务链可以chain在一起,那么其内部是如何决定

simulink中rem模块

在Simulink中,Rem模块用于计算两个数相除后的余数,即求模运算。它的功能非常简单,但在许多应用中非常有用,特别是在数字信号处理和控制系统中。 使用Rem模块的步骤 添加模块: 打开Simulink模型,在Simulink库浏览器中找到“Math Operations”下的“Rem”模块,将其拖放到模型中。 连接输入: Rem模块有两个输入端口: 第一个输入端口(上)是被除数(分子)。

5分钟搞懂什么是Nginx?

一、What's nginx?         1、在服务器上可以组装网页并且可以响应(response)浏览器http请求(request)的软件。         2、支持负载均衡。         3、支持静态网页缓存         那么nginx可以扮演的角色为(每个角色可以单独为一台服务器):                 1、web server(组装网页)

探索 MATLAB 中的 rem 函数:余数计算与应用

在 MATLAB 中,rem 函数用于计算除法的余数,这是一个非常实用的函数,尤其在需要处理循环、周期性数据或判断整除关系时。本文将深入探讨 rem 函数的用法、常见的应用场景以及与其他相关函数的比较。 1. rem 函数的基本语法 rem 函数的基本语法如下: r = rem(a, b); a:被除数,可以是标量、向量或矩阵。b:除数,可以是标量、向量或矩阵,通常与 a 的尺寸相同或为