吃透移动端 Html5 响应式布局

2020-04-25 07:26:33易采站长站整理

实现

与 rem 类似做法,直接使用postcss-px-to-viewport 插件进行配置, 配置方式也是和 postcss-pxtorem 大同小异

我们看看插件的原理是不是也是一样的


function createPxReplace(opts, viewportUnit, viewportSize) {
return function (m, $1) {
if (!$1) return m;
var pixels = parseFloat($1);
if (pixels <= opts.minPixelValue) return m;
var parsedVal = toFixed((pixels / viewportSize * 100), opts.unitPrecision);
return parsedVal === 0 ? '0' : parsedVal + viewportUnit;
};
}

果然呢,连方法名、变量名、代码逻辑,都一摸一样哈哈哈,谁抄谁,我就不指出来啦 – –

其他解决方案 

 

          

 

         

 方案缺陷
1百分比高度无法百分比
2媒体查询 + meta 中 viewport不同设备宽度不同,缩放比无法完全确定
3flex还是无法解决宽度超出问题

上面方案均存在致命缺陷,不推荐使用它完成移动端布局计算。

flex 与 rem 结合使用更佳

兼容性

上述两种方案, 兼容性主要在于 rem,vh,vw 关键词上

rem
在移动端表现高达 100%,令人惊叹!

 

 

vh vw
表现还是比较令人满意,低版本的 safari 情况下会有兼容性问题,但不影响它会成为一种比较好的移动端布局解决方案。

 开源库解决方案

vant 组件库

vant 组件库中,默认采用

px
做计量单位,如果需要使用
rem
,直接使用插件完美适配。

对于

vw
方案,vant 也是可以通过插件将
px
转成
vw
,对于
vw
可能会存在一些坑点。

ant-design-mobile 组件库

ant-design-mobile 组件库仍然使用

px
单位


@hd: 1px; // 基本单位

// 字体尺寸
// ---
@font-size-icontext: 10 * @hd;