当前位置:首页 > JavaScript

rem js实现

2026-03-02 07:56:58JavaScript

理解 REM 单位

REM(Root EM)是 CSS 中的相对长度单位,基于根元素(通常是 <html>)的字体大小。1 REM 等于根元素的字体大小。默认情况下,根元素的字体大小为 16px,因此 1 REM = 16px。

在 JavaScript 中设置 REM

通过 JavaScript 动态设置 REM 单位通常用于响应式设计,确保页面在不同设备上缩放比例一致。

rem js实现

// 获取根元素
const root = document.documentElement;

// 设置根元素的字体大小
function setRemUnit() {
  // 获取视口宽度(可根据需求调整计算方式)
  const viewportWidth = window.innerWidth;
  // 基于视口宽度计算 REM 值(例如,设计稿宽度为 750px 时,1 REM = 10px)
  const remValue = viewportWidth / 75;
  root.style.fontSize = `${remValue}px`;
}

// 初始化时调用
setRemUnit();

// 监听窗口大小变化
window.addEventListener('resize', setRemUnit);

计算 REM 值的逻辑

  1. 设计稿通常以固定宽度(如 750px)为标准。
  2. 设定 1 REM = 设计稿宽度 / 75(或其他比例),便于直接换算设计稿中的像素值。
  3. 例如,设计稿中 100px 的元素可直接写为 10 REM(若 1 REM = 10px)。

动态调整 REM 的优化

// 限制 REM 的最大值和最小值,避免极端情况
function setRemUnit() {
  const viewportWidth = window.innerWidth;
  const minRem = 12; // 最小 REM 值
  const maxRem = 24; // 最大 REM 值
  let remValue = viewportWidth / 75;
  remValue = Math.max(minRem, Math.min(remValue, maxRem));
  root.style.fontSize = `${remValue}px`;
}

注意事项

  • 避免在 CSS 中直接设置 <html> 的字体大小,否则会覆盖 JavaScript 的动态调整。
  • 在移动端开发中,REM 单位常用于适配不同屏幕尺寸,结合 meta viewport 使用效果更佳。
  • 使用 REM 时,CSS 中的其他相对单位(如 EM、百分比)可能会受到影响,需注意计算关系。

示例:完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>REM Demo</title>
  <style>
    body {
      margin: 0;
      padding: 0;
    }
    .box {
      width: 10rem;
      height: 10rem;
      background: #f00;
    }
  </style>
</head>
<body>
  <div class="box"></div>
  <script>
    const root = document.documentElement;
    function setRemUnit() {
      const viewportWidth = window.innerWidth;
      const remValue = viewportWidth / 75;
      root.style.fontSize = `${remValue}px`;
    }
    setRemUnit();
    window.addEventListener('resize', setRemUnit);
  </script>
</body>
</html>

标签: remjs
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…