vue项目pc端和移动端适配

1、pc端适配

一、样式中根据设计稿确定缩放比例(可以设置全局或者部分页面)

二、监听窗口大小改变,设置根字体大小
created() {
// 获取当前设备的宽度,设置rem的根字体大小
let width = window.innerWidth;
width = width <= 1200 ? 1200 : width;
const htmlObj = document.getElementsByTagName(“html”)[0];
htmlObj.style.fontSize = width / 76.8 + “px”;

// 对resize事件进行浏览器兼容处理
if (document.createEvent) {var event = document.createEvent("HTMLEvents");event.initEvent("resize", true, true);window.dispatchEvent(event);
} else if (document.createEventObject) {window.fireEvent("onresize");
}// 监听页面resize事件,重新设置rem的根字体大小
window.onresize = function () {let width = window.innerWidth;width = width <= 1200 ? 1200 : width;htmlObj.style.fontSize = width / 76.8 + "px";
};

},

三、使用时
如: height:px2rem(100px)

四、如果是部分页面使用,需要页面销毁时清理
destroyed() {
const htmlObj = document.getElementsByTagName(“html”)[0];
htmlObj.style.fontSize = “”;
window.onresize = null;
},

2、移动端项目适配

实现移动端适配步骤如下
1.先安装amfe-flexible和postcss-pxtorem
npm install amfe-flexible --save
npm install postcss-pxtorem --save
在main.js导入amfe-flexible
import ‘amfe-flexible’;
2.配置postcss-pxtorem ,可在vue.config.js、postcsssrc.js、postcss.config.js、其中之一配置,权重从左到右降低,没有则新建文件,只需要设置其中一个即可
在vue.config.js配置如下
module.export={
//…其他配置
css:{
loaderOptions:{
postcss:[
require(‘postcss-pxtorem’)({
rootValue:37.5,
propList:[‘‘]
})
]
}
}
}
在.postcssrc.js或postcss.config.js中配置如下:
module.exports = {
“plugins”: {
‘postcss-pxtorem’: {
rootValue: 37.5,
propList: [’
’]
}
}
}

rootValue根据设计稿宽度除以10进行设置,这边假设设计稿为375,即rootValue设为37.5;
propList是设置需要转换的属性,这边*为所有都进行转换。
测试结果:

css中设置某类宽度为375px:
.content{
width:375px;
}

运行后在浏览器可以发现已经转化为10rem,即375/设置的rootValue:
以上情况则说明postcss-pxtorem配置成功
html的字体大小跟随设备宽度进行改变,body跟随设备的dpr进行改变,这是amfe-flexible的实现,即说明配置成功。
说明,安装过程中可能会遇到以下报错:
1.安装配置后,发现rem并没有生效,解决办法:使用vue.config.js去配置,不要用postcss.config.js
2.抛错[object Object] is not a PostCSS plugin。报错原因:postcss-pxtorem版本太高,更改版本为5.1.1。npm install postcss-pxtorem@5.1.1

3、同时兼任pc和移动适配

通过配置两套不同路由和判断是否是移动端实现
1、写好两套路由
import Vue from “vue”;
import VueRouter from “vue-router”;

Vue.use(VueRouter);

//默认路由
export const routes = [
{
path: “/”,
redirect: “/home”,
},
];
//pc端的路由
export const pcRoutes = [
{
path: “/”,
redirect: “/home”,
},
{
path: “/home”,
name: “Home”,
component: () =>
import(/* webpackChunkName: “about” / “…/views/home/pc.vue”),
},
];
//移动端设备路由
export const mobileRoutes = [
{
path: “/”,
redirect: “/home”,
},
{
path: “/home”,
name: “Home”,
component: () =>
import(/
webpackChunkName: “about” */ “…/views/home/mobile.vue”),
},
];

const createRouter = () =>
new VueRouter({
scrollBehavior: () => ({ y: 0 }),
mode: “history”,
routes: routes,
});

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
const newRouter = createRouter();
router.matcher = newRouter.matcher; // reset router
}

export default router;

2、封装一个判断是否是移动端的方法
// 判断设备是否为移动端的方法
export const isMobile = () => {
return /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(
navigator.userAgent
);
};

3、src目录下创建一个init.js文件用于判断机型从而添加相应的路由
import router from “./router”;
import { isMobile } from “./utils”;
import { pcRoutes, mobileRoutes } from “./router”;

// 判断当前设备的型号从而改变当前路由
router.addRoute(isMobile() ? mobileRoutes[1] : pcRoutes[1]);

4、最后在vue项目的入口文件main.js文件中引入init.js。
import “./init.js”;

vue项目pc端和移动端适配相关推荐

  1. Vue项目pc端适配方案(scss)

    前言:vue项目适配可借助于插件lib-flexible 和postcss-px2rem. lib-flexible插件的作用:根据屏幕尺寸不同设置html根标签的字体大小,1rem即等于根标签的字体 ...

  2. vue项目PC兼容移动端

    做完的pc项目要求兼容移动端,常规操作的话是新做一个webapp后再来回跳转, 当前pc项目没有太多的交互和复杂的页面,所以决定在一个项目里进行兼容适配 1.新建两个组件,pc端页面组件,m端页面组件 ...

  3. vue项目屏幕分辨率屏幕的缩放适配-教程

    笔记本或者显示器 默认设置125%或者150%缩放,导致布局错乱的解决方法 现在很多14寸的笔记本,出厂默认就是150%的显示.导致很多时候我们的项目,自己开发的时候都是按照100%比例来开发的,上线 ...

  4. vue项目pc端使用rem进行适配 (lib-flexible+postcss-pxtorem)

    1.使用vue-cli创建项目 vue create my-app 2.安装lib-flexible与postcss-pxtorem依赖 npm install lib-flexible -Snpm ...

  5. vue项目PC端屏幕分辨率与窗口大小自适应

    效果 #mermaid-svg-O0n9N0Pq5xuLBK3e .label{font-family:'trebuchet ms', verdana, arial;font-family:var(- ...

  6. vue项目:知识付费平台(移动端)

    文章目录 主要功能 gitee地址 部分代码 主要功能 1.登录注册 2.课程的收藏订阅 3.课程播放 4.个人订单 5.课程筛选 - gitee地址 https://gitee.com/xiaoxi ...

  7. vue项目低版本浏览器XP/IE适配方案

    一.下载安装插件:babel-polyfill $ npm install babel-polyfill 二.创建文件:babel-config.js(放置src目录下) module.exports ...

  8. vue的pc端适配vw vh rem

    安装命令: npm i postcss-px-to-viewport@1.1.1npm i postcss-pxtorem@5.1.1 2.安装完之后在根目录新建postcss.config.js(和 ...

  9. vue项目区分打开的是pc端还是移动端

    我是一个vue 项目 pc一套代码 移动端一套代码 1.建立两个文件夹 一个mobile 一个pc,在router里配置项目路径 2.新建一个js文件夹 下列代码放入 假设名字叫util export ...

  10. iframe放大显示_iframe标签使用和在移动端(缩放)适配问题

    这是我做项目遇到的问题希望对你有帮助,忽喷! [iframe与window对象(contentwindow)] var detialIframe=document.all("detialIf ...

最新文章

  1. mysql8 my 010457_分享一下我在mysql5.6+mysql8数据库安装过程中的一些坑!
  2. redis-2.8.17安装指导(自己做测试了)
  3. 什么叫死区时间_什么是示波器的死区时间
  4. Spring websocket 使用@Autowired 出现null
  5. 自动化测试之java的job任务
  6. list里面的数据按3个字段排序_springboot2.X手册:redis的7种类型100个方法全解析
  7. 浅谈android应用之编程语言
  8. 华为模拟器eNSP直连路由静态路由配置实验
  9. shell脚本实战之坦克大战小游戏
  10. 高性能`锁库存`/`释放库存`重构实战
  11. ASP.NET Web API实现简单的文件下载与上传
  12. 常用电子元器件介绍 齿轮规格的参数
  13. 1、大道至简的数据处理工具-(Microsoft Power Query入门)
  14. 硬盘盒CE认证-EMC测试标准与流程
  15. 游戏反外挂技术原理讲解
  16. Pycaffe 使用集锦
  17. 2019牛客网高级项目
  18. Java项目:JSP宠物店管理系统
  19. 联想手机吹响反攻号角,“诺曼底计划”未来要剑指何方?
  20. 孝心无价 ——《为了母亲的微笑》序言

热门文章

  1. 给3D打印机升级的记录( i3 Mega S)
  2. 使用burpsuite对手机端APP抓包
  3. python group与groups 详解以及区分
  4. 阿里云智能巡检管家使用攻略及功能示例
  5. 9011,9012,9013,9014,8050,8550三极管的区别
  6. js判断上传文件为图片格式、excel格式
  7. 利用qq官方提供的js_sdk实现qq互联登录
  8. 小米(xiaomi)红米(Redmi)手机一开机就自动重启:find device closed unexpectedly
  9. 用Nginx在win2008服务器部署ssl后xmlhttp异常(msxml6.dll 错误 ‘80072f7d‘ )的解决方法
  10. Amos中介效应检验