web自适应指的是设计稿给出的往往只有单一尺寸,例如1920 * 1080。但是实际的web使用者分辨率各异,所以需要做适配方案。
一般需要全局适配的,主要是H5和大屏。后台项目只需要简单做一些过渡即可,@media媒体查询完全够用。
移动端布局之postcss-px-to-viewport(兼容vant)【更新于2021/09/27】
目前全局适配的方案,比较流行的有两种 px-to-rem 和 px-to-viewport。两者思路基本一致,都是将px转为相对单位 rem 和 vw。
安装依赖
1
| yarn add postcss-px-to-viewport -D
|
先说说刚刚看完的px-to-viewport。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
@use "sass:math";
$design_width: 1920; $design_height: 1080;
$min_font_size: 12;
@function vw($px) { @return math.div($px, $design_width) * 100vw; }
@function vh($px) { @return math.div($px, $design_height) * 100vh; }
@function font($px) { @return math.div($px, $design_width) * 100vw; }
|
通过vue.config.js 挂载到全局
1 2 3 4 5 6 7 8 9 10
| module.exports = { ... css: { loaderOptions: { sass: { prependData: `@import "@/style/base.scss";` } } } }
|
使用示例
1 2 3 4 5
| .demo { width: vw(100); height: vw(300); font-size: font(30); }
|
vite + vue3 实际操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // vue.conifg.js import pxtovw from 'postcss-px-to-viewport'
const loader_pxtovw = pxtovw({ viewportWidth: 6138, viewportUnit: 'vw' })
export default defineConfig({ base: './', css: { postcss: { plugins: [loader_pxtovw] } }, })
|