当前位置:首页 > JavaScript

js实现rem

2026-03-13 21:49:36JavaScript

rem 单位简介

rem(root em)是 CSS 中的相对长度单位,基于根元素(html)的字体大小进行计算。1rem 等于根元素的字体大小,默认情况下浏览器根元素字体大小为 16px。

动态设置 rem 基准值

通过 JavaScript 动态计算并设置根元素的字体大小,实现页面元素的等比缩放:

js实现rem

// 设计稿宽度(根据实际项目调整)
const designWidth = 750;
// 设计稿基准字体大小(通常为100px便于计算)
const baseFontSize = 100;

function setRem() {
  // 获取视口宽度
  const clientWidth = document.documentElement.clientWidth;
  // 计算比例值
  const scale = clientWidth / designWidth;
  // 设置根字体大小
  document.documentElement.style.fontSize = baseFontSize * scale + 'px';
}

// 初始化执行
setRem();
// 窗口大小变化时重新计算
window.addEventListener('resize', setRem);

CSS 中使用 rem

在 CSS 中直接使用 rem 单位,数值基于设计稿尺寸除以基准字体大小(100):

js实现rem

.element {
  width: 1.5rem; /* 设计稿中150px的元素 */
  font-size: 0.28rem; /* 设计稿中28px的文字 */
}

移动端适配补充

对于移动端项目,建议在 HTML 头部添加 viewport 设置:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

PostCSS 自动转换方案

在构建工具中可使用 postcss-pxtorem 插件自动将 px 转换为 rem:

// postcss.config.js
module.exports = {
  plugins: {
    'postcss-pxtorem': {
      rootValue: 100,
      propList: ['*'],
      selectorBlackList: [/^html$/]
    }
  }
}

注意事项

  • 避免在非根元素上设置 font-size 为 rem 单位
  • 图片等固定尺寸元素可考虑使用 px 单位
  • 弹性布局(flex/grid)可与 rem 单位配合使用
  • 临界值处理:可设置最大/最小字体大小限制

该方案可实现不同设备上的等比缩放,保持设计稿的视觉比例关系。实际开发时应根据项目需求调整设计稿宽度和基准字体大小参数。

标签: jsrem
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现继承

js 实现继承

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

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…