@IT·互联网

关于移动端适配

2024-02-24  本文已影响0人  jia林

分享一篇移动端适配的多个方案,也可以说说你们是怎么做的。

概念

为什么要做适配

市面上移动端屏幕尺寸非常的繁多,很多时候我们希望一个元素在不同的屏幕上显示不同的大小以此来更好的还原效果图:

1.当我们针对一个手机进行布局设计时,设置了一个 300 * 200 大小的盒子
2.但在不同的设备上,由于逻辑像素不同的问题,会使得这个盒子在更大的视口上显得很小,在更小的视口上显示很大
3.因此我们需要进行适配让它在不同设备上所占据视口的空间比例是相同的

当前几种适配方案

1.百分比设置(不推荐)
2.rem+html动态的font-size
3.vw单位
4.flex的弹性布局

方案1:rem+html动态的font-size

rem 单位是相对于 html 元素的 font-size 来设置的,通过在不同屏幕尺寸下,动态的修改 html 元素的 font-size 以此来达到适配效果

在开发中,我们只需要考虑两个问题:

font-size 的尺寸
屏幕尺寸 html的font-size 盒子的设置宽度 盒子的最终宽度
375px 37.5px 1rem 37.5px
320px 32px 1rem 32px
414px 41.4px 1rem 41.4px
px 与 rem 的单位换算
1.根据 html 的宽度计算出 font-size 的大小,并设置到 html 上
2.监听页面尺寸的变化,实时修改 font-size 大小
// 基准大小
const baseSize = 375 / 10 // 375为UI提供的375尺寸,如果是750尺寸则设置为750
// 设置 rem 函数
function setRem () {
  // 当前页面宽度相对于 375(设计稿尺寸) 宽的缩放比例,可根据自己需要修改。
  const scale = document.documentElement.clientWidth / 375
  // 设置页面根节点字体大小
  document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
  setRem()
}

方案2:vw 适配方案

100vw 相当于整个视口的宽度 innerWidth,1vw 相当于视口宽度的 1%,将 px 转换为 vw 即可完成适配,其实上面的 rem 就是模仿 vw 方案

vw相比于rem的优势:
px 与 vw 的单位转换
比如屏幕尺寸为 375px,元素大小为 150px,我们需要将 150px 转换成对应的 vw 值:150 / 3.75=40
// less/scss 函数
@vwUnit: 3.75;
.pxToVw(@px) {
  result: (@px / @vw) * 1vw
}
.box {
  width: .pxToVw(100)[result];
  height: .pxToVw(100)[result];
} 
上一篇 下一篇

猜你喜欢

热点阅读