当前位置:首页 > JavaScript

rem js实现

2026-03-02 07:56:58JavaScript

rem js实现

理解 REM 单位

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

在 JavaScript 中设置 REM

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

// 获取根元素
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>

rem js实现

标签: remjs
分享给朋友:

相关文章

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的cur…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li>&l…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…