vw+pxtorem+媒体查询实现移动端适配

首先来说一下思路:

首先项目中使用的单位都是px,手动将px转换为rem肯定不现实,这时候就用pxtorem插件将项目中使用的px转换为rem,转换为rem后,由于rem是根据font-size变化而变化的,要想实现移动端适配,就需要在屏幕大小是移动端大小时根据屏幕大小动态修改font-size从而影响rem修改px大小,这里根据屏幕大小动态修改font-size我使用的是vw,上面配置好后就实现了移动端的适配,接下来再通过媒体查询修改布局来实现响应式

引用一段对 vw、vh、vm 的描述

  • vw是视口宽度的单位,视口宽度是100vw
  • vh是视口高度的单位,视口高度是100vh
  • vm取vw和vh较小的一个除以100作为单位

直接将根元素的 font-size 设置为 10vw,即可实现相同效果

详细步骤:

1、下载pxtorem

npm install pxtorem

2、在nuxt.config.js中引入

//webpack配置
  build: {
    postcss: {
      plugins: {
        'postcss-pxtorem': {
          //这个 rootValue 参数就是 1rem = 多少 px ,设置为 54 就是 1rem=54px
      //这里的54px(font-size)是中间值,是让元素本身的px大小除以54后转换为rem,然后在使用时又乘以后面设置的54转换为真实的大小,移动端改变font-size后对应的元素大小也会改变
          rootValue: 54,
          //这个参数忽略哪些css属性不被影响(即不修改px->rem)
          propList: ['*', '!border', '!border-bottom', '!border-top'],
          //忽略适配css文件(后面会提到,是适配文件,里面的px不要转换为rem)
          exclude: function (file) { return file.indexOf('flexible.css') !== -1; }
        }
      }
    }
  },

配置完pxtorem后项目的px就会自动转换为rem了,可以浏览器f12查看

3、配置css适配文件

/* 移动端适配 CSS ./assets/css/flexible.css */
html {
    font-size: 10vw !important;
}/* 屏幕大小大于540px时不进行适配,font-size固定*/
/* 小于540px时通过10vw进行大小适配,也就是540/10=54px,刚好无缝衔接 */
@media (min-width: 540px) {
    html {
    /* 这里设置为54px和pxtorem的一致 */
        font-size: 54px !important;
    }
}/* 解决适配后div块布局错乱问题 */
div {
    font-size: initial;
    *font-size: 100%;
}

在nuxt.config.js中引入


//引入css文件
  css: [
    '@/assets/css/flexible.css'
  ],

这一步配置结束后就完成了移动端的适配,接下来就可以通过媒体查询对不同屏幕大小实现响应式布局

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值