关于移动端与大屏幕自适应适配方案

 更新时间:2022年10月19日 11:11:03   作者:大橘为重¨  
这篇文章主要介绍了关于移动端与大屏幕自适应适配方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一、安装并配置相应插件

1.安装lib-flexible与postcss-pxtorem

使用npm下载包

注:下载 postcss 版本为5.1.1(其它版本可能会出现报错)

npm i lib-flexible 
npm i postcss-pxtorem@5.1.1

2.配置lib-flexible与postcss-pxtorem

配置 postcss-pxtorem 设置页面px自动转换为rem

创建vue.config.js文件,添加如下配置:

//vue.config.js
const pxtorem = require('postcss-pxtorem')
module.exports = {
    css: {
        loaderOptions: {
            postcss: {
                plugins: [
                    pxtorem({
                        rootValue: 80,  //这里设置参考"设计稿大小"和自己认为"合适的划分比例"(例:1920/24 = 80)
                        propList: ['*'],
                    })
                ]
            }
        }
    }
}

注:该插件可以把组件库的px也转化为rem

按需修改 lib-flexible 源码配置

在 main.js 引入 lib-flexible

import 'lib-flexible'

修改"node_modules\lib-flexible\flexible.js"下源码配置

function refreshRem(){
    var width = docEl.getBoundingClientRect().width;
    //这里代表适配744~5760宽度的屏幕视图,可以按需修改
    if (width / dpr < 744) {
        width = 744 * dpr;
    } else if (width / dpr > 5760) {
        width = 5760 * dpr;
    }
    //这里width的相除值需要和前面vue.config.js文件下rootValue的相除值相同
    var rem = width / 24;
    docEl.style.fontSize = rem + 'px';
    flexible.rem = win.rem = rem;
}

效果: 

二、设置移动端适配

这里主要讲将pc端页面等比缩放到移动端显示,并且支持移动端用户对页面进行放大和缩小查看

于 src 下新建 utils 文件在其中创建 adaptive.config.js文件

编写如下代码:

import { onMounted } from "vue";
// 判断客户端设备
const _isMobile = () => {
    let flag = navigator.userAgent.match(
        /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
    );
    return flag;
};
// "移动端"手动添加 mate 标签函数
const addMeta = (name, content) => {
    const meta = document.createElement("meta");
    meta.content = content;
    meta.name = name;
    document.getElementsByTagName("head")[0].appendChild(meta);
};
// 渲染页面配置 mate 标签 
export default function adaptive() {
    onMounted(() => {
        if (_isMobile()) {
            console.log("手机");
            addMeta("viewport", "user-scalable=yes");
        } else {
            console.log("pc");
        }
    });
}

在 App.vue 下导入使用:

<script>
import adaptive from './utils/adaptive.config';
export default {
  setup() {
    adaptive()
  },
}
</script>

注:如果直接修改html上meta标签属性可能是影响到 lib-flexible 的原因会出现移动端无法等比缩放的问题出现,故用此方法移动端下动态修改meta标签。

三、注意问题

  • element有些组件会有内联样式,postcss-pxtorem无法使内联样式由px转换为rem
  • 这里建议自己注意一下在组件的属性值设置并自行修改,或者用媒体查询进行组件样式修改

例如:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解vue项目的构建,打包,发布全过程

    详解vue项目的构建,打包,发布全过程

    小编给大家通过本文详细介绍了关于vue.js项目的构建、打包、发布的全过程,文章很以后价值,值得你参考。
    2017-11-11
  • vue中用js如何实现循环可编辑表格

    vue中用js如何实现循环可编辑表格

    这篇文章主要介绍了vue中用js如何实现循环可编辑表格,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue-admin-template模板添加tagsview的实现

    vue-admin-template模板添加tagsview的实现

    本文主要介绍了vue-admin-template模板添加tagsview的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 一篇文章带你彻底搞懂VUE响应式原理

    一篇文章带你彻底搞懂VUE响应式原理

    这篇文章主要介绍了一篇文章带你彻底搞懂VUE响应式原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可任意参考一下,需要的朋友可以参考下
    2022-06-06
  • 使用Vite+Vue3+TypeScript 搭建开发脚手架的详细过程

    使用Vite+Vue3+TypeScript 搭建开发脚手架的详细过程

    这篇文章主要介绍了Vite+Vue3+TypeScript 搭建开发脚手架的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • 在Vue2中v-model和.sync区别解析

    在Vue2中v-model和.sync区别解析

    在vue2中提供了.sync修饰符,但是在vue3中不再支持.sync,取而代之的是v-model,本文给大家介绍在Vue2中v-model和.sync区别,感兴趣的朋友一起看看吧
    2023-10-10
  • Vue3新增时自动获取当前时间的操作方法

    Vue3新增时自动获取当前时间的操作方法

    这篇文章主要介绍了Vue3新增时自动获取当前时间的操作方法,本文通过实例代码图文相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 使用异步组件优化Vue应用程序的性能

    使用异步组件优化Vue应用程序的性能

    这篇文章主要介绍了使用异步组件优化Vue应用程序的性能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • vue前端导出多级表头的excel表的示例代码

    vue前端导出多级表头的excel表的示例代码

    本文主要介绍了vue前端导出多级表头的excel表的示例代码,可以使用xlsx库来创建Excel文件,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-06-06
  • 基于vue实现页面滚动加载的示例详解

    基于vue实现页面滚动加载的示例详解

    页面内容太多会导致加载速度过慢,这时可考虑使用滚动加载即还没有出现在可视范围内的内容块先不加载,出现后再加载,所以本文给大家介绍了基于vue实现页面滚动加载的示例,需要的朋友可以参考下
    2024-01-01

最新评论