您现在的位置是:网站首页> 编程资料编程资料
详解rem 适配布局关于rem适配的3种常用封装移动 web 端屏幕适配(rem)详解html5页面 rem 布局适配方法详解H5 活动页之移动端 REM 布局适配方法手机端用rem+scss做适配的详解
2023-10-16
357人已围观
简介 当今手机种类繁多,所以不可能每一款手机都要写一套布局样式,rem 就是用来自适应布局的,本文就详细的介绍了rem 适配布局,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
当今手机种类繁多 且不说iphone系列,安卓手机的种类已经数不胜数了,所以不可能每一款手机都要写一套布局样式,这也是不可能做到的,但是对于越来越精益求精的前端来说 ,当然要找到一个合理的解决方案。rem 就是用来自适应布局的。
适配要达到的效果,如下图(简单的示范一下)

两个div不论在大屏还是小屏上都是占据屏幕的一半
虽然上面这种简单的使用百分比可以实现但是,百分比无法实现字体的自适应,百分比转换成相应的尺寸还是很难的。接下来就说说这次我们的主角 rem(我们一般只适配宽度)
rem 原理解析
首先rem是一个相对于根元素fontSize大小的相对单位,也就是说 1rem 等于 html 的 fontSize 大小, 接下来我们只需要改变html 元素的 fontSize 就可以控制 rem 的大小。接下来我们怎么适配不同的屏幕呢,只要我们做到 屏幕宽度越大 1rem 表示的px值越大及HTML的fontSize值越大,也就是说 HTML的fontSize要于屏幕的宽度成正比。
再说一下一些概念 设备像素比 、 设备物理像素 、 设备独立像素 (有时也说是虚拟像素)
设备像素比 = 设备物理像素 / 设备独立像素
设备物理像素: 设备上显示的最小单位
设备独立像素: 独立于设备的用于逻辑上衡量像素的单位(css尺寸)。
就拿iphone6/7/8 做说明iphone6/7/8的物理像素是750,是设备的实际尺寸,而px是是设备独立像素单位,iphone6/7/8是2倍屏,它的css尺寸就是 375, 设备像素比是设备出厂时已经设置好的。 那么我们怎么实现适配?
这就用到最流行的rem了
rem的实现方案
首先、根据不同屏幕的设备物理像素,要跟html元素的fontSize设置不同的px大小
1、媒体查询
html{ font-size:16px; } @media screen and (min-width:240px) { html { font-size:9px; } } @media screen and (min-width:320px) { html { font-size:12px; } } @media screen and (min-width:375px) { html{ font-size:14.0625px; } }利用@media screen and (min-width:XXX)来判断设备的尺寸,进而设置html的fontSize
2、js设置html的fontSize(网易方案)
function setRem () { let htmlRem = document.documentElement.clientWidth document.documentElement.style.fontSize = htmlRem/7.5 + 'px' } setRem()以上代码是以iphone6为设计稿,结果是1rem=100px的实际像素,因为iphone6的设备像素比是2所以1rem在浏览器的预览中是50px,也就是实现了1rem和设备宽度成7.5倍的关系,设备宽度改变1rem的实际大小也会改变,而且在屏幕中的比例是没有变的。(市面上大多数是这种方案)
3、使用vw、vh
html{ font-size: 10vw }vw、vh是新的一种相对单位是把可视区域分的宽高为100份类似于百分比布局,这种方案它不用去写js,不过兼容性有点差
下面附上vw、vh兼容性的表

每篇一省 rem是相对于根元素的fontSize,所以所有努力就是设置根元素的fontSize与设备宽度成正比
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- HTML高亮关键字的实现代码HTML高亮关键字的完美解决方案
- 前端canvas动画如何转成mp4视频的方法HTML5 Canvas 破碎重组的视频特效的示例代码canvas像素点操作之视频绿幕抠图video结合canvas实现视频在线截图功能canvas绘制视频封面的方法详解基于canvas的视频遮罩插件canvas与html5实现视频截图功能示例Canvas获取视频第一帧缩略图的实现
- Html5 实现微信分享及自定义内容的流程HTML5播放实现rtmp流直播html5用video标签流式加载的实现基于 HTML5 WebGL 实现的医疗物流系统HTML5 canvas 瀑布流文字效果的示例代码HTML5移动端手机网站开发流程HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影HTML5梦幻之旅——炫丽的流星雨效果实现过程HTML5 离线应用之打造零请求、无流量网站的解决方法Html5之webcoekt播放JPEG图片流
- 详解利用canvas实现环形进度条的方法canvas实现圆形进度条动画的示例代码HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
- HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- 利用canvas实现图片下载功能来实现浏览器兼容问题canvas 下载二维码和图片加水印的方法html5使用canvas实现图片下载功能的示例代码
- Canvas 文字碰撞检测并抽稀的方法Html5 Canvas动画基础碰撞检测的实现
- 叉叉助手ios安装教程 叉叉游戏助手ios怎么用 _手机游戏_游戏攻略_
- 时空猎人 猫女装备要怎么选择 猫女的装备心得_手机游戏_游戏攻略_
- 我是火影 影忍怎么合成 影忍合成注意事项_手机游戏_游戏攻略_
