龙空技术网

web前端-移动端适配方案分析

dixon 27

前言:

现时朋友们对“前端如何做移动端适配”大体比较讲究,各位老铁们都需要学习一些“前端如何做移动端适配”的相关文章。那么小编同时在网摘上网罗了一些对于“前端如何做移动端适配””的相关文章,希望咱们能喜欢,小伙伴们快快来了解一下吧!

一般情况下吗,设计稿的设计师按照 375 的尺寸设计,在手机(移动端)快速更新迭代的今天,每个品牌的手机都有着不同的物理分辨率和逻辑分辨率,此时 375 的设计稿,如果想要还原那基本是不可能了,每个设备的右边所展示的内容大小就不尽相同,这个时候就需要web前端工程师进行移动端适配。下面我们详细了解一下。

如何适配

我们先设置一个meta,然后再进行适配。meta的各个属性不在解释,有兴趣的同学可以自行了解。

<meta name='viewport' content='width=device-width; initial-scale=1; maximum-scale=1; minimum-scale=1; user-scalable=no;'>

适配方法:

1.单位选择rem

rem是相对长度单位,rem方案中的样式设计为相对于根元素font-size计算值的倍数。根据 屏幕宽度 设置html标签的font-size,在布局时使用 rem 单位布局,达到自适应的目的,是 弹性布局 的一种实现方式。

实现方法: 首先获取文档根元素和设备dpr,设置 rem,在html文档加载和解析完成后调整body字体大小; 在页面缩放 / 回退 / 前进的时候, 获取元素的内部宽度,重新调整 rem 大小。

Js代码(在header添加)

(function() {

function autoRootFontSize() {

document.documentElement.style.fontSize =Math.min(screen.width,document.documentElement.getBoundingClientRect().width) / 750 * 32 + 'px';

// 取screen.width和document.documentElement.getBoundingClientRect().width的最小值;除以750,乘以32,就是原本是750大小的32px;

// 如果屏幕大小变成了375px,那么字体就是16px;也就是根字体fontSize大小和屏幕大小成正比变化!

}

window.addEventListener('resize', autoRootFontSize);

autoRootFontSize();

})();

接下来就可以使用rem作为css单位了

2.vh/vw方案

vh、vw 方案即将视觉视口宽度 window.innerWidth 和视觉视口高度 window.innerHeight 等分为 100 份。 使用sass进行适配

//iPhone 6尺寸作为设计稿基准

$vm_base:375;

@function vw($px){

@return ($px/375)*100vw;

}

设置相应的vw之后就可以使用vw作为css单位,如:

.title{

font-size:vw(16);

}

3.基于媒体查询+rem

@media screen and (min-width:350px){

html{font-size:342%;}}

@media screen and (min-width:360px){

html{font-size:351.56%;}

}@media screen and (min-width:375px){

html{font-size:366.2%;}

}@media screen and (min-width:384px){

html{font-size:375%;}

}@media screen and (min-width:390px){

html{font-size:380.85%;}

}@media screen and (min-width:393px){ /* 小米NOTE */

html{font-size:383.79%;}

}@media screen and (min-width:410px){

html{font-size:400%;}

}@media screen and (min-width:432px){ /* 魅族3 */

html{font-size:421.875%;}

}@media screen and (min-width:480px){

html{font-size:469%;}

}@media screen and (min-width:540px){

html{font-size:527.34%;}

}@media screen and (min-width:640px){

html{font-size: 625%;}

}

@media screen and (width:720px){

html{font-size: 703.125%;}

}

接下来就可以使用rem作为css单位了,而不用编写js,各有优劣。

4.基于媒体查询+rem,这里不做赘述

标签: #前端如何做移动端适配