当前位置:首页 > VUE

vue移动端实现适配

2026-02-25 02:14:30VUE

Vue 移动端适配方案

视口配置

public/index.html 中添加 meta 标签,设置视口宽度等于设备宽度,并禁止缩放:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">

使用 REM 适配

安装 postcss-pxtorem 插件:

npm install postcss-pxtorem --save-dev

配置 postcss.config.js

module.exports = {
  plugins: {
    'postcss-pxtorem': {
      rootValue: 37.5, // 设计稿宽度/10
      propList: ['*'],
      selectorBlackList: ['.norem']
    }
  }
}

在入口文件添加动态计算根字体大小:

function setRem() {
  const docEl = document.documentElement
  const width = docEl.clientWidth
  docEl.style.fontSize = width / 10 + 'px'
}
window.addEventListener('resize', setRem)
setRem()

使用 VW 适配

安装 postcss-px-to-viewport 插件:

npm install postcss-px-to-viewport --save-dev

配置 postcss.config.js

module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      viewportWidth: 375, // 设计稿宽度
      unitPrecision: 5,
      viewportUnit: 'vw',
      selectorBlackList: ['.ignore'],
      minPixelValue: 1,
      mediaQuery: false
    }
  }
}

响应式布局

使用 CSS 媒体查询实现不同屏幕尺寸适配:

@media screen and (max-width: 768px) {
  .container {
    width: 100%;
  }
}
@media screen and (min-width: 769px) {
  .container {
    width: 750px;
  }
}

组件库适配

对于 Vant 等移动端组件库,需要在项目中配置按需加载和适配:

// babel.config.js
module.exports = {
  plugins: [
    ['import', {
      libraryName: 'vant',
      libraryDirectory: 'es',
      style: name => `${name}/style/less`
    }, 'vant']
  ]
}

1px 边框问题

使用伪元素和 transform 解决高清屏下 1px 边框变粗问题:

.border-1px {
  position: relative;
}
.border-1px::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: #ddd;
  transform: scaleY(0.5);
  transform-origin: 0 0;
}

图片适配

使用 srcset 属性提供不同分辨率图片:

<img src="image@1x.jpg" srcset="image@1x.jpg 1x, image@2x.jpg 2x" alt="">

横竖屏检测

监听 orientationchange 事件处理横竖屏变化:

window.addEventListener('orientationchange', function() {
  if (window.orientation === 90 || window.orientation === -90) {
    console.log('横屏')
  } else {
    console.log('竖屏')
  }
})

vue移动端实现适配

标签: vue
分享给朋友:

相关文章

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template>…

vue 实现工具

vue 实现工具

Vue 实现工具的方法 使用 Vue 实现工具功能可以通过多种方式完成,具体取决于工具的类型和需求。以下是几种常见的方法: 组件化实现 创建一个独立的 Vue 组件来封装工具功能。例如,实现一个计…

vue 实现脚本

vue 实现脚本

Vue 实现脚本的方法 Vue.js 提供了多种方式来实现脚本功能,包括组件内脚本、混入(Mixins)、插件(Plugins)以及自定义指令等。以下是常见的实现方式: 组件内脚本 在 Vue 单…

vue环境实现

vue环境实现

Vue 环境搭建 安装 Node.js 和 npm Node.js 是运行 Vue 的基础环境,npm 是包管理工具。从 Node.js 官网 下载并安装最新稳定版本。安装完成后,在终端运行以下命令验…