JS移动端适配_Rem布局实现方案

Rem布局通过动态设置html的font-size实现移动端适配,核心是根据设备宽度按比例调整rem基准值,结合viewport元标签和JavaScript计算,使页面元素等比缩放,配合预处理器可自动化转换px为rem,确保多设备一致性。

js移动端适配_rem布局实现方案

移动端适配是前端开发中常见的需求,尤其在不同尺寸的手机屏幕上保持页面布局的一致性。使用 Rem 布局 是一种成熟且广泛采用的方案。Rem(font-size of the root element)是相对于根元素(html)字体大小的单位,通过动态调整 html 的 font-size,可以实现页面元素的等比缩放,从而达到适配效果。

Rem 原理与基本思路

Rem 的大小由 html 标签的 font-size 决定,默认浏览器 font-size 为 16px,即 1rem = 16px。适配的核心思想是:根据设备屏幕宽度动态设置 html 的 font-size,使 1rem 对应当前屏幕的一个相对单位,从而让所有使用 rem 的元素自动缩放。

例如:设计稿为 750px 宽,我们希望 750px 宽度对应 html 的 font-size 为 75px,则 1rem = 75px,那么 375px 的元素就是 5rem。

动态设置 html 的 font-size

通过 JavaScript 获取设备的屏幕宽度,并计算出对应的 font-size 值,然后设置到 html 元素上。

示例代码:

function setRem() {  const designWidth = 750; // 设计稿宽度  const remSize = 75; // 1rem 对应的像素值(如 750 / 10 = 75)  const scale = document.documentElement.clientWidth / designWidth;  document.documentElement.style.fontSize = remSize * scale + 'px';}

// 页面加载和窗口变化时执行window.addEventListener('resize', setRem);window.addEventListener('DOMContentLoaded', setRem);

这段代码会在页面加载和窗口大小变化时,根据当前屏幕宽度按比例设置 html 的字体大小。比如在 375px 宽的屏幕上,scale = 375 / 750 = 0.5,font-size = 75 * 0.5 = 37.5px,此时 1rem = 37.5px。

CSS 中使用 rem 单位

在 CSS 中,将原本用 px 的尺寸转换为 rem。推荐使用预处理器(如 Sass、Less)或 PostCSS 插件自动转换。

假设设计稿中一个 div 宽 150px,高 100px,边距 20px:

.box {  width: 2rem;     /* 150 / 75 = 2 */  height: 1.333rem; /* 100 / 75 ≈ 1.333 */  margin: 0.267rem; /* 20 / 75 ≈ 0.267 */}

这样在不同设备上,.box 会随 rem 缩放而等比变化。

配合 meta viewport 使用

确保页面正确缩放,必须设置 viewport:


这句 meta 标签会让浏览器将页面宽度设为设备独立像素宽度,是 rem 适配的基础。

优化与注意事项

实际项目中可做以下优化:

限制 font-size 的最小和最大值,避免极端设备上文字过小或过大使用防抖优化 resize 事件性能结合 dpr 设置缩放,提升高清屏显示效果(可选)使用 PostCSS 插件(如 postcss-pxtorem)自动将 px 转为 rem,减少手动计算

基本上就这些。Rem 布局简单可控,适合大多数移动端 H5 场景,关键是统一设计稿基准和开发规范。不复杂但容易忽略细节,比如 viewport 和动态计算的同步问题。

以上就是JS移动端适配_Rem布局实现方案的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1538960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 05:33:19
下一篇 2025年12月21日 05:33:27

相关推荐

  • h5里js和servlet实现文件上传的实现步骤

    这次教大家的是在h5里如何用js和servlet来实现文件上传,不过有一个前提条件,必须要是h5和jsp3.0版本,因为用到了新属性,获取file对象和后台得到part对象。 下面给大家看一个案列 前台jsp Insert title here name: 文件: 提交 function btu()…

    好文分享 2025年12月21日
    000
  • HTML页面跳转及参数传递问题

    这篇文章给大家详细介绍了html页面跳转及参数传递问题,希望能帮助到大家。 HTML页面跳转: window.open(url, “”, “width=600,height=400”); 第二个参数:_self,在当前窗口打开窗口;_blank(默认值),在另外的新建窗口打开新窗口; 立即学习“前端…

    好文分享 2025年12月21日
    000
  • React中的HTML转义写法

    在JSX中输出固定内容 直接使用utf-8字符 {代码…} 使用HTML转义字符 {代码…} 或者十进制的转义字符 {代码…} 动态内容的转义 但是如果在外面加一层大括号的话,react为了防止xss会将转义后的字符实体再次转义,本文我们就和大家分享React中的…

    好文分享 2025年12月21日
    000
  • HTML实现简单的提示框

    本文我们将和大家分享HTML实现简单的提示框,由于项目中需要一个简单的提示框,就是鼠标放上去,可以提示相关信息,引用第三方的比较麻烦,所以,这里封装了一个很简单的HTML方法。 function show(obj,id) { var objp = $(“#”+id+””); /** 这里我们可以使用…

    2025年12月21日
    000
  • 总结HTML网页中插入视频的方法

    现在如果要在页面中使用video标签,需要考虑三种情况,支持ogg theora或者vp8(如果这玩意儿没出事的话)的(opera、mozilla、chrome),支持h.264的(safari、ie 9、chrome),都不支持的(ie6、7、8)。好吧,现在让我们从技术层面来认识html 5的视…

    好文分享 2025年12月21日
    000
  • 用JS和html做一个简易画板代码

     今天教大家做一个小程序,利用css3和h5以及js做一个好玩的简易画板,有兴趣的朋友可以动手尝试一下,代码贴在下面。大家也可以发挥自己的创造力改动一些功能。 html:颜色版:笔触:css:*{ margin:0; padding:0;}body{ background:#000;}canvas{…

    好文分享 2025年12月21日
    000
  • html中相对定位与绝对定位

    来讲讲html中相对定位与绝对定位,有的后端同学对html的相对定位与绝对定位,不太熟的福利来了,本篇对于html的相对定位与绝对定位讲的很详细呢! html是整个文档空间,body是html中的文档空间, body与html相差9cm左右 postion中的相对定位:relative postio…

    好文分享 2025年12月21日
    000
  • HTML如何实现文本框不能修改其中的内容

    本文我们将和大家分享一个基础的知识:html实现文本框只读不能修改其中的内容的方法,希望对大家有帮助。 以上内容就是HTML实现文本框只读不能修改其中的内容的方法,虽然很简单,但是确实是个实用的小办法,希望对大家有帮助。 相关推荐: jQuery实现设置、移除文本框默认值功能 html中实现inpu…

    好文分享 2025年12月21日
    000
  • html 导出到 excel

    html 导出到 excel,使用html还可以导出excel呢,让我们一起来看看吧,html结合js是如何导出excel的。 流程 : 1. 获取html标签内容 2. 获取html标签内容 3. 转成blob 对象 立即学习“前端免费学习笔记(深入)”; 4. 添加模拟事件 网页HTML存本地保…

    好文分享 2025年12月21日
    000
  • XML与HTML的区别

    相信有很多同学都搞不清楚html和xml到有什么区别对吧!今天就让我们看一下html和xml的区别在哪里,html和xml的语法有什么不同。 一、什么是HTML        带着疑问走到这里,一句话:HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言。…

    好文分享 2025年12月21日
    000
  • 网页布局的时候先写HTML还是先写CSS

    很多朋友都有自己的习惯,有的人喜欢先写css,有的人喜欢先写html,那么网页布局最科学的写法流程是什么呢?今天来给大家一起分析一下 网上有很多种对此的答案:先写HTML后写CSS;先写CSS后写HTML;两者同时写。 我在平时做html页面是选择的两者同时进行,首先先建立好网站大致目录文件,如im…

    好文分享 2025年12月21日
    000
  • html img标签的使用

    本文详细讲解了html中的图片标签的多种使用功能,在一个html页面中图片肯定是少不了的,html的img标签也很简单很好掌握的,我们一起来看看吧! img显示本地图片使用的是相对路径 如: @@##@@ 开发技巧:在实际开发中,一般会在项目目录下创建一个imgs文件夹,将图片资源都放在里面,方便开…

    2025年12月21日
    000
  • HTML里关于表格table嵌套的注意事项

     我们知道table表格嵌套有一个最大的问题就是边框会重复,这样就会造成有的地方 边框粗,有的地方边框细,今天就来给大家带来解决办法   【解决办法】:  padding=”0″ style=”html” target=”_blank&#8…

    好文分享 2025年12月21日
    000
  • HTML里FormData对象的详细介绍

    今天来给大家详细的介绍一下formdata对象,下面从头从头开始创建一个formdata对象,然后通过append() 方法向对象中添加键值,请看案例 var formData = new FormData();formData.append(“username”, “Groucho”);formD…

    好文分享 2025年12月21日
    000
  • HTML里无法显示背景颜色的解决方法

    今天给大家解决一个小问题,对于很多新手来说,有时候布局的背景颜色总是无法显示,我总结了俩个问题,下面给大家举例解答 一般布局背景无法显示通常原因如下: 1、由使用float浮动造成浮动产生无法显示css背景颜色 2、高度不够而产生背景无法显示 接下来我们分别介绍无法显示背景颜色或图片的原因和解决方法…

    好文分享 2025年12月21日
    000
  • html与xhtml的区别详解

    今天来给大家详细的介绍一下俩个概念,html和xhtml的相同与不同,帮助大家更好的理解前端技术。 html与xhtml的最主要的不同区别:(以下的讲解例子中将用红色区分) 1、XHTML 元素必须被正确地嵌套。 例子:一般html网页可以“主要内容”这是个不严格,在XHTML是错误的;正确的在xh…

    好文分享 2025年12月21日
    000
  • HTML网页优化压缩的实现步骤

    想要对自己的html网页实现优化压缩的话需要检查5个方面,分别是,将table改为div布局,缩减精简div、span、ul li等系列标签,删除多余空格,表格类型布局时候适当使用table替代div布局,html网页gzip压缩,将table改为div布局 。下面给大家详细的介绍一下 尽量将tab…

    好文分享 2025年12月21日
    000
  • HTML的网页错位原因以及解决方法

    我们常常会遇到需要设置同一行的布局,但是却因为种种原因错了位,我总结了一下网页布局错位大概有俩种原因,今天给大家好好分析一下原因以及解决方法。 常常我们会遇到我们要设置在一行显示的布局,却因为种种原因造成了错位,看到结果是在一行的最后一个盒子布局错位掉下去了 造成DIV CSS网页布局错位的原因大概…

    好文分享 2025年12月21日
    000
  • HTML里需要兼容验证的浏览器有哪些

    我们知道,不论做什么前端项目,一定要注意的事项就是兼容性,那么今天就给大家带来一份详细的攻略,我们来看看需要兼容验证的浏览器有哪些。 需要兼容验证的浏览器有哪些?DIV+CSS开发需要安装的浏览器有哪些? div+css需要验证兼容性的浏览器:微软浏览器包括IE6、IE7、IE8即将出来的IE9浏览…

    好文分享 2025年12月21日
    000
  • HTML 框架如何使用

    使用html框架的好处不用自己去写令人头疼的响应式了,html标签使用也比新手程序员使用的要严谨等,会使用了html框架这样对我们的html代码书写量也会减少哦! Previous Page Next Page 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。 框架 立即学习“前端免费学习…

    好文分享 2025年12月21日
    000

发表回复

登录后才能评论
关注微信