h5移动端适配

本文介绍了如何在开发中解决不同设备尺寸适配问题,通过postcss-px-to-viewport和cnjm-postcss-px-to-viewport插件将px单位转换为vw,以及使用autoprefixer添加浏览器前缀以提高兼容性。重点讲解了针对vant组件设计稿尺寸为375px的特殊处理方法。
摘要由CSDN通过智能技术生成

一、为什么需要适配

        在日常的开发中,设计师给的设计稿的尺寸一般为375和750像素的,但是用户使用的手机的尺寸都是不一样的,需要根据设计尺寸生成适合所有手机的尺寸。

二、传统的方法

        通常如果要实现响应式的尺寸,会使用rem和vw,rem是相对于跟元素的字体大小,vw是相对于适口的大小,1vw相当于总宽的的1%。这两种方法的弊端也十分明显,代码不利于维护,也不清晰。

三、实现

postcss-px-to-viewport插件

// postcss.config.js
module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      viewportWidth: 375,
    },
  },
};

用于将 px 单位转化为 vw/vh 单位,但是vant组件的设计稿尺寸为375,往往不适配一般的750设计稿。

需要一个新的插件cnjm-postcss-px-to-viewport

const path = require('path');
module.exports = {
    plugins: {
        // ....
        // 修改插件名称
        'cnjm-postcss-px-to-viewport': {
            unitToConvert: 'px', // 要转化的单位
            viewportWidth: 750, // UI设计稿的宽度
            unitPrecision: 3, // 转换后的精度,即小数点位数
            propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
            viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
            fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
            selectorBlackList: ['ignore'], // 指定不转换为视窗单位的类名,
            minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
            mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
            replace: true, // 是否转换后直接更换属性值
            exclude: [], // 设置忽略文件,用正则做目录名匹配
            landscape: false, // 是否处理横屏情况
            // 如果没有使用其他的尺寸来设计,下面这个方法可以不需要,比如vant是375的
            customFun: ({ file }) => {
                // 这个自定义的方法是针对处理vant组件下的设计稿为375问题
                const designWidth = path.join(file).includes(path.join('node_modules', 'vant')) ? 375 : 750;
                return designWidth;
            }
        }
    }
};

autoprefixer插件,为兼容所有浏览器,部分CSS属性需要加上不同的浏览器前缀,Autoprefixer 就能很方便的解决上述问题,简化我们的开发模式。


module.exports = {
    plugins: {
        // ....
        autoprefixer: {
            overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8']
        },
       
    }
};

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值