首页 > 其他分享 >vue实现pc和移动端兼容响应式布局

vue实现pc和移动端兼容响应式布局

时间:2025-01-21 11:22:02浏览次数:1  
标签:vue 适配 兼容 pc device 移动 路由

1.一套代码实现pc端和移动端兼容。

(1)获取设备类型

 // main.js
 navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)

(2)样式适配

  • 拆分两套css

    ​通过判断终端类型,加载不同的css文件,控制元素显隐

  • 媒体查询结合rem实现PC端和移动端共用一套代码的适配方

    媒体查询 @media为不同的尺寸设备应用不同的样式

    rem 是一个根据 html 根元素 font-size 计算的相对单位(让大小尺寸不一的手机都能按比例的缩放)。rem适合写固定尺寸,其余的根据需要换成flex或者百分比。

    <style scope>/* PC端的CSS样式代码 */
    
    @media screen and (max-width: 750px) {/* 移动端的CSS样式代码 */}</style>
    

      

2.一个项目两套代码,一套路由规则开发。

1)获取当前设备类型,共享给全局使用

  • pinia 中定义名为 device 的 state,用于全局共享当前设备(pc || mobile)

  • app.vue监听当前设备类型

mounted() {
  window.addEventListener('resize', this.resizeChange, false)
}
resizeChange () {
  // 判断是否是 pc 或者 移动端
  // 默认设置当屏幕宽度 > 1000 时,为PC端
  if (document.documentElement.clientWidth > 1000) {
    useDevice.setDevice('pc')
  } else {
    // 默认设置当屏幕宽度 <= 1000 时,为移动端
    useDevice.setDevice('mobile')
  }
},
// 也可以用机型之类的条件来判断
resizeChange () {
  const width = document.documentElement.clientWidth
  // 先判断 UA 是否为移动端设备(手机&平板)
  if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
      this.mode = 'mobile'
  } else {
      // 如果为桌面设备,再根据页面宽度判断是否需要切换为移动端展示
      if (width < 992) {
         useDevice.setDevice('mobile')
      } else {
         useDevice.setDevice('pc')
      }
  }
}
destroyed () {
    window.removeEventListener('resize', this.resizeChange, false)
  }
  • 页面结构

            device/index.vue中使用动态组件,控制使用device/pc.vue 或device/mobile.vue。

(2) 使用 postcss-px-to-viewport 将项目中的 px 单位转换为 vw

      配置include: [/device\\m.vue/]使我们移动端代码中的 px 单位自动转换为 vw,而 pc 端的代码不受影响。

  有的使用postcss-pxtorem、amfe-flexible做Rem适配

​     amfe-flexible:根据屏幕宽度,自动设置html的font-size ​ postcss-pxtorem:自动将px单位转换成rem

(3) mixins 来优化

         pc端 和 移动端 的差别更多体现在页面元素的样式上(大小、位置、显隐),而实际的业务逻辑变化并不大。比如可以在首页 index 页面目录下添加一个 mixin.js 文件,将 device/pc.vue 和 device/mobile.vue 的公共业务逻辑抽离到该文件中,从而实现复用。

3.一个项目两套代码,两套路由规则开发

       同时兼任pc和移动适配

       通过配置两套不同路由和判断是否是移动端实现

       核心代码:*router.addRoute(isMobile() ? mobileRoutes[1] : pcRoutes[1]);*(区分路由)

        路由适配(路由守卫),组件适配

       比较麻烦,不推荐

 

标签:vue,适配,兼容,pc,device,移动,路由
From: https://www.cnblogs.com/wq805/p/18683241

相关文章

  • vue3新增API
    Vue3引入了许多新的API和特性,以下是一些主要的新增API列表:组合式APIsetup:组合式API的入口函数。ref:创建一个响应式的引用对象。reactive:将一个普通对象转换为响应式对象。computed:用于定义计算属性。watch和watchEffect:用于侦听响应式数据的变化。toRefs和toR......
  • 关于Web开发中vue的介绍以及发送异步请求的学习
    昨天,我再一次打开了黑马程序员中的Web开发教程,对于之前学习遗漏的进行了补充,了解了Vue其实是一个简化之后的JavaScript框架,主要利用了MVVM模型,在使用时需要引用Vue.js文件newVue({el:'#app',data:{message:'HelloVue!'}});在以上简单代码中,如果message中的数据发生变......
  • 国产化板卡设计原理图:2295-基于 JFM7K325T的半高PCIe x4双路万兆光纤收发卡
      基于JFM7K325T的半高PCIex4双路万兆光纤收发卡    一、板卡概述   板卡采用JFM7K325T芯片作为主处理器,可应用于万兆网络、高速数据采集、存储;光纤隔离网闸等领域。      二、功能和技术指标: 板卡功能参数内容......
  • 国产板卡设计原理图:2226-基于JFM7K325T PCIeX8 四路光纤卡
    一、板卡概述     板卡主芯片采用JFM7K325TFPGA,pin_to_pin兼容FPGAXC7K410T-2FFG900,支持8-LanePCIe、64bitDDR3、四路SFP+连接器、四路SATA接口、内嵌16个高速串行收发器RocketIOGTX,软件具有windows驱动。    二、功能和技术指标: 板卡功能参......
  • 2024 (ICPC) Jiangxi Provincial Contest I 题 Neuvillette Circling题解
    简单思路一个圆套中了几个点,如果不断缩小这个圆,那么最终的结果有两种有两个点卡住了这个圆,且这两点一定是直径有三个或者三个以上的点卡住了这个圆,圆心在这三个点围成的三角形的外接圆圆心。因此我们枚举两点作为直径,或者枚举三个点作为圆的内接三角形,求这个三角形的外接圆......
  • 2024 (ICPC) Jiangxi Provincial Contest L 题 Campus 题解
    简单思路首先对于所有的出口求一遍最短路,由于出口只会打开并关闭一次,所以大门的开启状态是相当有限的(最多大概30种),我们对于每一种状态直接暴力求答案最后输出即可。复杂度大概\(O(knlogn)\)参考代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;type......
  • 【开源免费】基于Vue和SpringBoot的智慧图书管理系统(附论文)
    本文项目编号T152,文末自助获取源码\color{red}{T152,文末自助获取源码}......
  • 【开源免费】基于Vue和SpringBoot的文档管理系统(附论文)
    本文项目编号T151,文末自助获取源码\color{red}{T151,文末自助获取源码}......
  • vue3 如何结构props还能响应式
    在Vue3.5及其更新版本中,确实引入了一些改进,使得解构props并保持响应性变得更加简单。具体来说,Vue3.5引入了对setup函数中的props解构的原生支持,通过编译时优化确保解构后的变量仍然是响应式的。Vue3.5中直接解构props在Vue3.5及以上版本中,你可以直接在setup......
  • vue3 tsx ref获取dom写法
    在Vue3中使用TSX并结合ref来获取DOM元素或组件实例,可以通过Vue提供的组合式API(CompositionAPI)来实现。Vue3支持JSX/TSX语法,允许你在函数式组件中编写类似JSX的代码。下面是一个具体的示例,展示了如何在TSX中使用ref来获取DOM元素。步骤安装必要的依赖......