位置: IT常识 - 正文

vue 项目的屏幕自适应方案(vue display)

编辑:rootadmin
vue 项目的屏幕自适应方案 方案一:使用 scale-box 组件

推荐整理分享vue 项目的屏幕自适应方案(vue display),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue display,vue做大屏,vue大屏展示项目实例,vue全屏显示,vue全屏显示,vue大屏展示项目实例,vue大屏展示项目实例,vue 大屏显示,内容如对您有帮助,希望把文章链接给更多的朋友!

属性:

width 宽度 默认 1920height 高度 默认 1080bgc 背景颜色 默认 "transparent"delay自适应缩放防抖延迟时间(ms) 默认 100

vue2版本:vue2大屏适配缩放组件(vue2-scale-box - npm)

npm install vue2-scale-box

或者

yarn add vue2-scale-box

使用方法:

<template> <div> <scale-box :width="1920" :height="1080" bgc="transparent" :delay="100"> <router-view /> </scale-box> </div></template><script>import ScaleBox from "vue2-scale-box";export default { components: { ScaleBox },};</script><style lang="scss">body { margin: 0; padding: 0; background: url("@/assets/bg.jpg");}</style>

vue3版本:vue3大屏适配缩放组件(vue3-scale-box - npm)

npm install vue3-scale-box

或者

yarn add vue3-scale-boxvue 项目的屏幕自适应方案(vue display)

使用方法:

<template> <ScaleBox :width="1920" :height="1080" bgc="transparent" :delay="100"> <router-view /> </ScaleBox></template><script>import ScaleBox from "vue3-scale-box";</script><style lang="scss">body { margin: 0; padding: 0; background: url("@/assets/bg.jpg");}</style>方案二:设置设备像素比例(设备像素比)

在项目的 utils 下新建 devicePixelRatio.js 文件

class devicePixelRatio { /* 获取系统类型 */ getSystem() { const agent = navigator.userAgent.toLowerCase(); const isMac = /macintosh|mac os x/i.test(navigator.userAgent); if (isMac) return false; // 目前只针对 win 处理,其它系统暂无该情况,需要则继续在此添加即可 if (agent.indexOf("windows") >= 0) return true; } /* 监听方法兼容写法 */ addHandler(element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } } /* 校正浏览器缩放比例 */ correct() { // 页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消devicePixelRatio带来的变化 document.getElementsByTagName("body")[0].style.zoom = 1 / window.devicePixelRatio; } /* 监听页面缩放 */ watch() { const that = this; // 注意: 这个方法是解决全局有两个window.resize that.addHandler(window, "resize", function () { that.correct(); // 重新校正浏览器缩放比例 }); } /* 初始化页面比例 */ init() { const that = this; // 判断设备,只在 win 系统下校正浏览器缩放比例 if (that.getSystem()) { that.correct(); // 校正浏览器缩放比例 that.watch(); // 监听页面缩放 } }}export default devicePixelRatio;

在 App.vue 中引入并使用即可

<template> <div> <router-view /> </div></template><script>import devPixelRatio from "@/utils/devicePixelRatio.js";export default { created() { new devPixelRatio().init(); // 初始化页面比例 },};</script><style lang="scss">body { margin: 0; padding: 0;}</style>方案三:通过 JS 设置 zoom 属性调整缩放比例

在项目的 utils 下新建 monitorZoom.js 文件

export const monitorZoom = () => { let ratio = 0, screen = window.screen, ua = navigator.userAgent.toLowerCase(); if (window.devicePixelRatio !== undefined) { ratio = window.devicePixelRatio; } else if (~ua.indexOf("msie")) { if (screen.deviceXDPI && screen.logicalXDPI) { ratio = screen.deviceXDPI / screen.logicalXDPI; } } else if ( window.outerWidth !== undefined && window.innerWidth !== undefined ) { ratio = window.outerWidth / window.innerWidth; } if (ratio) { ratio = Math.round(ratio * 100); } return ratio;};

在 main.js 中引入并使用即可

import { monitorZoom } from "@/utils/monitorZoom.js";const m = monitorZoom();if (window.screen.width * window.devicePixelRatio >= 3840) { document.body.style.zoom = 100 / (Number(m) / 2); // 屏幕为 4k 时} else { document.body.style.zoom = 100 / Number(m);}

完整代码

import Vue from "vue";import App from "./App.vue";import router from "./router";/* 调整缩放比例 start */import { monitorZoom } from "@/utils/monitorZoom.js";const m = monitorZoom();if (window.screen.width * window.devicePixelRatio >= 3840) { document.body.style.zoom = 100 / (Number(m) / 2); // 屏幕为 4k 时} else { document.body.style.zoom = 100 / Number(m);}/* 调整缩放比例 end */Vue.config.productionTip = false;new Vue({ router, render: (h) => h(App),}).$mount("#app");获取屏幕的分辨率

获取屏幕的宽:

window.screen.width * window.devicePixelRatio

获取屏幕的高:

window.screen.height * window.devicePixelRatio移动端适配(使用 postcss-px-to-viewport 插件)

官网:https://github.com/evrone/postcss-px-to-viewport

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

或者

yarn add -D postcss-px-to-viewport

配置适配插件的参数(在项目根目录创建 .postcssrc.js 文件[与 src 目录平级])粘贴以下代码即可

module.exports = { plugins: { autoprefixer: {}, // 用来给不同的浏览器自动添加相应前缀,如-webkit-,-moz-等等 "postcss-px-to-viewport": { unitToConvert: "px", // 需要转换的单位,默认为"px" viewportWidth: 390, // UI设计稿的宽度 unitPrecision: 6, // 转换后的精度,即小数点位数 propList: ["*"], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换 viewportUnit: "vw", // 指定需要转换成的视窗单位,默认vw fontViewportUnit: "vw", // 指定字体需要转换成的视窗单位,默认vw selectorBlackList: ["wrap"], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位 minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换 mediaQuery: false, // 是否在媒体查询的css代码中也进行转换,默认false replace: true, // 是否直接更换属性值,而不添加备用属性 exclude: [/node_modules/], // 忽略某些文件夹下的文件或特定文件,用正则做目录名匹配,例如 'node_modules' 下的文件 landscape: false, // 是否处理横屏情况 landscapeUnit: "vw", // 横屏时使用的视窗单位,默认vw landscapeWidth: 2048 // 横屏时使用的视口宽度 } }};
本文链接地址:https://www.jiuchutong.com/zhishi/298547.html 转载请保留说明!

上一篇:Vue3父子组件间传参通信(vue父组件子组件)

下一篇:Vue3 中 axios 的安装及使用(vue3+antd)

  • 抖音粉丝有星标是什么意思(抖音粉丝星标代表什么)

    抖音粉丝有星标是什么意思(抖音粉丝星标代表什么)

  • 快手隐私用户还能上热门吗(快手隐私用户还可以看别人作品吗)

    快手隐私用户还能上热门吗(快手隐私用户还可以看别人作品吗)

  • 华为mate30怎么下载两个微信(华为mate30怎么下载歌曲到u盘)

    华为mate30怎么下载两个微信(华为mate30怎么下载歌曲到u盘)

  • 京东怎么分期买手机(京东怎么分期买东西)

    京东怎么分期买手机(京东怎么分期买东西)

  • 国产屏幕和原装区别(国产屏幕和原装屏幕有什么区别苹果)

    国产屏幕和原装区别(国产屏幕和原装屏幕有什么区别苹果)

  • 华为手机智慧语音是什么(华为手机智慧语音叫什么名字)

    华为手机智慧语音是什么(华为手机智慧语音叫什么名字)

  • ghz980是什么处理器(ghz990是什么处理器)

    ghz980是什么处理器(ghz990是什么处理器)

  • cdr手机用什么软件打开(cdr文件用什么手机软件打开)

    cdr手机用什么软件打开(cdr文件用什么手机软件打开)

  • 通话黑屏怎么关闭(通话黑屏怎么关闭OPPO)

    通话黑屏怎么关闭(通话黑屏怎么关闭OPPO)

  • qq背景变黑色,怎么调过来(qq背景变成黑色了怎么调回白色呢)

    qq背景变黑色,怎么调过来(qq背景变成黑色了怎么调回白色呢)

  • iphone扩音器进水怎么清理(苹果扩音进水)

    iphone扩音器进水怎么清理(苹果扩音进水)

  • 微信没有消息怎么还有个1(微信没有消息怎么还提示有消息)

    微信没有消息怎么还有个1(微信没有消息怎么还提示有消息)

  • 手机qq为什么登不上去(手机qq为什么登录不了显示无网络怎么回事)

    手机qq为什么登不上去(手机qq为什么登录不了显示无网络怎么回事)

  • 红米note8pro怎么关闭广告(红米note8pro怎么降级)

    红米note8pro怎么关闭广告(红米note8pro怎么降级)

  • 魅族16T怎么进入工程模式(魅族16t怎么进入fastboot)

    魅族16T怎么进入工程模式(魅族16t怎么进入fastboot)

  • excel怎么自动求和(excel怎么自动求积)

    excel怎么自动求和(excel怎么自动求积)

  • 如何让u盘悬浮在桌面(u盘悬浮窗口怎样恢复)

    如何让u盘悬浮在桌面(u盘悬浮窗口怎样恢复)

  • 买苹果xsmax送耳机吗(苹果xs送耳机)

    买苹果xsmax送耳机吗(苹果xs送耳机)

  • 车载u盘怎么连接手机(车载u盘怎么连接汽车)

    车载u盘怎么连接手机(车载u盘怎么连接汽车)

  • 虾米音乐怎么绑定淘宝(虾米音乐怎么解除绑定手机号)

    虾米音乐怎么绑定淘宝(虾米音乐怎么解除绑定手机号)

  • 安卓如何连接beatsx(安卓如何连接热点)

    安卓如何连接beatsx(安卓如何连接热点)

  • 酷狗m1耳机如何重置(酷狗m1耳机如何佩戴)

    酷狗m1耳机如何重置(酷狗m1耳机如何佩戴)

  • 华为p30在哪里下载软件(华为p30怎么下载)

    华为p30在哪里下载软件(华为p30怎么下载)

  • 小米熄屏怎么显示时间(小米手机灭屏后怎么显示时间)

    小米熄屏怎么显示时间(小米手机灭屏后怎么显示时间)

  • 火狐浏览器如何升级(火狐浏览器如何截图)

    火狐浏览器如何升级(火狐浏览器如何截图)

  • 详解JS实现单个或多个文件批量下载的方法(js编写一个标准的单例模式类)

    详解JS实现单个或多个文件批量下载的方法(js编写一个标准的单例模式类)

  • 税务师职业考试
  • 这个季度报税时间怎么算
  • 车间人员负担的工会经费
  • 转租房产税计税依据
  • 500元以内的无票报销是累计还是一次
  • 进口增值税和进项税
  • 货物赔偿是否需要发票
  • 公司注销前的发言怎么写
  • 建筑工地的零星补单是指什么意思
  • 不同税率的增值税如何报税
  • 房屋租赁合同印花税计税依据
  • 分项结转分步法例题及分录
  • 估价入账是什么意思
  • 2018营改增房产税计税依据
  • 增值税出口退税计算
  • 发票过期一年可以用吗
  • 电子发票报销有什么用
  • 存货跌价准备的分录
  • 票据状态提示付款
  • 腾讯电脑管家下载
  • err出错
  • 初学者如何
  • echarts w3c
  • 没有取得发票的成本可以税前扣除吗
  • php socket_read
  • php file_append
  • 给客户回扣如何做账
  • 非盈利组织盈利怎么办
  • 废品损失属于产品成本项目吗
  • thinkphp6框架源码完整版下载
  • 供热企业税收优惠
  • 分享使用护肤品的感受
  • 个体户季度免多少税
  • 申报高新企业的好处
  • 金税盘清卡失败增值税未申报或未比对
  • 扣缴义务人如何登录电子税务局
  • 使用SQL server创建数据库和表
  • 金税四期对小规模企业有何要求
  • 递延所得税资产和负债账务处理
  • 丢失增值税专用发票的征管政策
  • 预付账款如何结账
  • 企业接收到政府信息
  • 购买原材料保险费分录
  • 专项资金补助经费如何入账
  • 公司每个月申报怎么报的
  • 怎么取最大值函数
  • 实缴制下未到位资金
  • 营改增后工程项目计价规则也随之发生了改变对错
  • 哪些企业执行新的租赁政策
  • win10隐藏文件怎么隐藏
  • win10系统开机出现
  • vistasp3
  • windows server 2008下一些设置技巧及优化经验总结
  • 系统图工具
  • 联想笔记本bios设置启动顺序
  • win10动态磁贴不更新
  • windows一体机
  • windowsxp有密码忘了怎么办
  • vmware虚拟机Linux扩展硬盘
  • Win7开机就蓝屏
  • windows8 defender
  • js中的三种弹出式消息提醒的命令是什么
  • css兼容性写法
  • 百度贴吧上传图片大小
  • iframe嵌套页面滚动事件
  • 置顶txt
  • Linux 中的各项 CPU 利用率是这样算出来的
  • unity相关问题
  • js有多重模块定义方式
  • 不用jquery用什么
  • js实现的奥运倒计时时钟效果代码
  • javascript基础
  • Android网络通讯哪个最简单
  • 按照5%的征收率减按1.5%
  • 法人注册怎么注册
  • 融资租赁公司购入老旧租赁资产会计处理
  • 企业代扣代缴个税
  • 广州地税网上服务大厅地址
  • 如何优化企业的筹资结构
  • 应缴纳资源税税额怎么计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设