rem的实现

css实现适配

设备宽度大, 元素尺寸大

设备宽度小,元素尺寸小

目前rem布局方案中,将网页等分成10份, HTML标签的字号为视口宽度的 1/10

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 使用媒体查询, 根据不同的视口宽度, 设置不同的根字号 */
        @media (width:375px) {
            html {
                font-size: 40px;
            }
        }
 
        @media (width:320px) {
            html {
                font-size: 30px;
            }
        }
    </style>
</head>
 
<body>
 
</body>
 
</html>

插件实现适配

使用postcss-pxtorem插件 

js实现适配

rem(倍数) = width / (html的font-size)=> width = (html的font-size) * rem(倍数)

使用 JavaScript 实现 rem 适配的方式需要两个步骤:

  1. 计算并设置根元素的 font-size 值。通常情况下,我们将根元素默认的 font-size 设置为 16px,然后通过 JS 计算出当前设备宽度下的根元素 font-size 值,再设置给根元素。

  2. 在需要使用 rem 单位的地方,根据计算得到的根元素 font-size 值,将需要设置的数值除以根元素 font-size 值,得到对应的 rem 数值。

具体的实现方式如下:

// 计算并设置根元素的 font-size 值
function setRemUnit() {
  const baseSize = 16; // 默认基准字体大小
  const designWidth = 375; // 设计稿宽度
  const screenWidth = window.innerWidth; // 屏幕宽度
  const fontSize = screenWidth / designWidth * baseSize;
  document.documentElement.style.fontSize = fontSize + 'px';
}

setRemUnit(); // 页面加载时先执行一次

// 监听窗口大小变化,重新计算 font-size 值
window.addEventListener('resize', setRemUnit);

上述代码中,我们定义了三个变量:

  • baseSize:默认的基准字体大小,即根元素默认的 font-size 值。
  • designWidth:设计稿的宽度,通常是 750 或者 375 等像素值。
  • screenWidth:当前屏幕的宽度,在浏览器中可以通过 window.innerWidth 获取。

然后我们使用 setRemUnit() 函数计算并设置根元素的 font-size 值,最后监听窗口大小变化事件,当窗口大小发生变化时,重新计算并设置根元素的 font-size 值。

猜你喜欢

转载自blog.csdn.net/Clover_zlx/article/details/130684390
rem