当前位置:首页 > JavaScript

rem js实现

2026-01-31 16:49:31JavaScript

JavaScript 实现 REM 布局

REM(Root EM)是一种基于根元素字体大小的相对单位,常用于移动端适配。以下是实现 REM 布局的详细方法:

设置根元素字体大小

通过 JavaScript 动态计算并设置根元素(<html>)的 font-size,通常以屏幕宽度为基准:

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 单位,所有尺寸将自动适配屏幕宽度:

.box {
  width: 2rem;  /* 实际宽度为屏幕宽度的2/10 */
  font-size: 0.3rem; /* 字体大小为屏幕宽度的0.3/10 */
}

结合媒体查询(可选)

为防止极端尺寸下布局异常,可添加媒体查询限制根字体大小的范围:

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

设计稿尺寸转换

若设计稿基于 750px 宽度,可通过工具(如 PostCSS 插件)将像素值自动转换为 REM。手动计算规则为: $$ rem = \frac{设计稿像素值}{基准值(如75)} $$ 例如设计稿中 150px 的元素对应 CSS 中 2rem(150÷75)。

rem js实现

注意事项

  • 避免在非尺寸属性(如颜色、定位)中使用 REM。
  • 安卓设备可能对小于 12px 的字体渲染异常,需单独处理。
  • 禁用用户缩放可增强一致性:<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

标签: remjs
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…