当前位置:首页 > JavaScript

js实现rem

2026-01-31 23:42:33JavaScript

使用 JavaScript 动态计算 rem

在移动端开发中,rem 是一种相对单位,基于根元素(html)的字体大小。通过 JavaScript 动态设置根元素的字体大小,可以实现页面在不同设备上的自适应布局。

function setRemUnit() {
  const docEl = document.documentElement;
  const width = docEl.clientWidth;
  const rem = width / 10; // 将屏幕宽度分为 10 份,1rem = 屏幕宽度的 1/10
  docEl.style.fontSize = rem + 'px';
}

// 初始化
setRemUnit();

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

结合 CSS 使用 rem

在 CSS 中,可以使用 rem 单位来定义元素的尺寸、边距等属性。由于根字体大小已通过 JavaScript 动态设置,所有使用 rem 的元素将自动适应不同屏幕尺寸。

js实现rem

.container {
  width: 10rem; /* 10rem = 屏幕宽度 */
  padding: 0.5rem;
  font-size: 0.32rem;
}

处理高分辨率屏幕

对于高分辨率屏幕(如 Retina 显示屏),可以结合 window.devicePixelRatio 调整 rem 的计算方式,确保显示效果更精细。

js实现rem

function setRemUnit() {
  const docEl = document.documentElement;
  const width = docEl.clientWidth;
  const dpr = window.devicePixelRatio || 1;
  const rem = (width * dpr) / 10;
  docEl.style.fontSize = rem + 'px';
}

兼容性处理

为了确保代码在旧版本浏览器中正常运行,可以添加 DOM 加载完成的监听事件,并在页面加载时立即执行设置。

document.addEventListener('DOMContentLoaded', setRemUnit);
window.addEventListener('load', setRemUnit);

使用媒体查询作为备用方案

尽管 JavaScript 可以实现动态调整,但在某些情况下(如 JavaScript 禁用时),可以通过 CSS 媒体查询设置一个默认的根字体大小。

html {
  font-size: 16px;
}

@media screen and (min-width: 320px) {
  html {
    font-size: 32px;
  }
}

注意事项

  • 避免在 JavaScript 中频繁触发 resize 事件,可以通过防抖(debounce)函数优化性能。
  • 在设计与开发过程中,建议使用固定的设计稿尺寸(如 750px),并通过比例计算 rem 值。
  • 测试时需覆盖不同分辨率的设备,确保布局效果符合预期。

标签: jsrem
分享给朋友:

相关文章

vue实现rem适配

vue实现rem适配

Vue 项目中实现 REM 适配 REM(Root EM)是一种基于根元素(html)字体大小的相对单位,常用于移动端适配。以下是在 Vue 项目中实现 REM 适配的详细方法。 安装 postc…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: cons…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: f…

js实现正交

js实现正交

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