vue项目移动端适配的两种方案

vue项目移动端适配的两种方案

方法1

1.npm install amfe-flexible --save   自适应不同屏幕
//在main.js导入amfe-flexible
import "amfe-flexible" // 解决各个页面尺寸适配性

2.npm install postcss-pxtorem --save  将px转为rem
//然后在根目录新建.postcssrc.js文件
module.exports = {
  // autoprefixer postcss其中的一个工具,获取浏览器支持的css样式,不支持加前缀
  // 脚手架已经默认集成autoprefixer这个工具,所以报错
  plugins: {
    //   'autoprefixer': {
    //   browsers: ['Android >= 4.0', 'iOS >= 8', 'ie >= 10']
    //   },
    'postcss-pxtorem': { 
      // 设计稿的1/10 vans组件的设计稿正好是375 37.5
      // 包含vant关键字,代表处理的是vant样式
      // 不包含代表处理的就不是vant样式
      rootValue(res) {
        return res.file.indexOf('vant') !==-1 ? 37.5 : 75
      },
      propList: ['*'],// 代表转换css的所有属性,*表示通用
      exclude: 'github-markdown' //忽略的选择器
    }
  }
}

方法2

1.src/utils/flexible.js文件
// rem计算方式:设计图尺寸px / 100 = 实际rem  例: 100px = 1rem
!(function(window) {
  /* 设计图文档宽度 */
  const docWidth = 750
  const doc = window.document
  const docEl = doc.documentElement
  const resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
  const recalc = (function refreshRem() {
    const clientWidth = docEl.getBoundingClientRect().width
    /* 8.55:小于320px不再缩小,11.2:大于420px不再放大 */
    docEl.style.fontSize = Math.max(Math.min(20 * (clientWidth / docWidth), 11.2), 8.55) * 5 + 'px'
    return refreshRem
  })()
  /* 添加倍屏标识,安卓倍屏为1 */
  docEl.setAttribute('data-dpr', window.navigator.appVersion.match(/iphone/gi) ? window.devicePixelRatio : 1)
  if (/iP(hone|od|ad)/.test(window.navigator.userAgent)) {
    /* 添加IOS标识 */
    doc.documentElement.classList.add('ios')
    /* IOS8以上给html添加hairline样式,以便特殊处理 */
    if (parseInt(window.navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/)[1], 10) >= 8) { doc.documentElement.classList.add('hairline') }
  }
  if (!doc.addEventListener) return
  window.addEventListener(resizeEvt, recalc, false)
  doc.addEventListener('DOMContentLoaded', recalc, false)
}(window))

//在main.js引入
import '@/utils/flexible.js' 
2.npm install postcss-px2rem --save
配置文件同上
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Vue PC项目移动,可以使用以下步骤: 1. 首先,在开发环境中安装postcss-px-to-viewport插件。可以通过以下命令进行安装:`npm install postcss-px-to-viewport --save-dev`。这个插件可以帮助将像素单位转换为视口单位,实现移动。 2. 在项目根目录中添加postcss.config.js置文件。可以在置文件中设置插件的相关参数,如需要转换的单位、设计稿的视口宽度、单位转换后保留的精度等。置如下: ```javascript module.exports = { plugins: { 'postcss-px-to-viewport': { unitToConvert: 'px', viewportWidth: 1920, unitPrecision: 5, propList: ['*'], viewportUnit: 'vw', fontViewportUnit: 'vw', selectorBlackList: [], minPixelValue: 1, mediaQuery: false, replace: true, exclude: undefined, include: undefined, landscape: false, landscapeUnit: 'vw', landscapeWidth: 1920 } } }; ``` 这个置会将指定的CSS属性值转换为vw单位,从而实现移动。 3. 在Vue项目的main.js文件中引入lib-flexible库。可以通过以下代码进行引入:`import 'amfe-flexible';`。这个库可以自动设置页面的根字体大小,以应不同设备的屏幕尺寸。 4. 在vue.config.js文件中置postcss-pxtorem插件,用于将像素单位转换为rem单位。可以按照以下置进行设置: ```javascript module.exports = { css: { loaderOptions: { postcss: { plugins: [ require('postcss-pxtorem')({ rootValue: 37.5, propList: ['*'] }) ] } } }, }; ``` 这个置会将像素单位转换为rem单位,其中rootValue设置为37.5可以方便地将设计稿的像素值转换为rem值。 通过以上步骤,你的Vue PC项目就可以移动了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue移动 / PC解决方案](https://blog.csdn.net/weixin_48862362/article/details/121518364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [手把手教你实现VuePC移动](https://blog.csdn.net/Orange71234/article/details/131329898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值