位置: 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)

  • 支付宝好友支持视频语音聊天吗(支付宝好友可以干嘛)

    支付宝好友支持视频语音聊天吗(支付宝好友可以干嘛)

  • 淘宝拒收能退全款吗(淘宝拒收会全额退款吗)

    淘宝拒收能退全款吗(淘宝拒收会全额退款吗)

  • 华为荣耀30和p30有什么区别(华为荣耀30和荣耀30青春版手机壳一样吗)

    华为荣耀30和p30有什么区别(华为荣耀30和荣耀30青春版手机壳一样吗)

  • 微信延迟到账多久到账(微信延迟到账多长时间可以到对方账户)

    微信延迟到账多久到账(微信延迟到账多长时间可以到对方账户)

  • ipad会中病毒吗(ipad会不会中毒)

    ipad会中病毒吗(ipad会不会中毒)

  • 微信号可以用哪些方式注册(微信号可以用哪些符号)

    微信号可以用哪些方式注册(微信号可以用哪些符号)

  • ipad充电自动开机(ipad充电自动开机关机无限循环)

    ipad充电自动开机(ipad充电自动开机关机无限循环)

  • 如何关掉屏保图片(如何把屏保图片这个功能关闭)

    如何关掉屏保图片(如何把屏保图片这个功能关闭)

  • 支付宝被对方拉黑怎么转账(支付宝被对方拉黑了怎么办怎么恢复)

    支付宝被对方拉黑怎么转账(支付宝被对方拉黑了怎么办怎么恢复)

  • 钉钉打卡后会跟踪定位吗(钉钉打卡会有记录吗)

    钉钉打卡后会跟踪定位吗(钉钉打卡会有记录吗)

  • lan1是什么接口(lan接口有什么区别)

    lan1是什么接口(lan接口有什么区别)

  • 钉钉老师可以调动前置摄像头吗(钉钉老师可以调声音吗)

    钉钉老师可以调动前置摄像头吗(钉钉老师可以调声音吗)

  • 计算机的内存储器比外存储器(计算机的内存储器分为)

    计算机的内存储器比外存储器(计算机的内存储器分为)

  • 好友删除还能偷能量不(好友被删除了还能看到她的微信号了吗)

    好友删除还能偷能量不(好友被删除了还能看到她的微信号了吗)

  • ps怎么把衣服变白色(ps怎么把衣服变形)

    ps怎么把衣服变白色(ps怎么把衣服变形)

  • 怎样让word生成目录(怎样word生成目录)

    怎样让word生成目录(怎样word生成目录)

  • 苹果怎么打开百度云zip(苹果怎么打开百度下载的软件)

    苹果怎么打开百度云zip(苹果怎么打开百度下载的软件)

  • 抖音删了怎么恢复手机(抖音删了怎么恢复找回来)

    抖音删了怎么恢复手机(抖音删了怎么恢复找回来)

  • oppo有nfc功能吗(r17oppo有nfc功能吗)

    oppo有nfc功能吗(r17oppo有nfc功能吗)

  • 抖音播放量0是怎么回事(抖音播放量是要看完才算吗)

    抖音播放量0是怎么回事(抖音播放量是要看完才算吗)

  • 手机上方有个眼睛似的东西是什么(手机上方有个眼睛的标志是什么意思)

    手机上方有个眼睛似的东西是什么(手机上方有个眼睛的标志是什么意思)

  • 如何快速绝对引用(如何快速绝对引用对应单元格的内容)

    如何快速绝对引用(如何快速绝对引用对应单元格的内容)

  • no bootable device什么意思

    no bootable device什么意思

  • 话费不支持开腾讯会员(为什么用话费开不了腾讯会员)

    话费不支持开腾讯会员(为什么用话费开不了腾讯会员)

  • java队列抛出异常的介绍(java队列用法)

    java队列抛出异常的介绍(java队列用法)

  • 一般纳税人的现金收入
  • 减免所得税如何申报
  • 金蝶能够反年结账吗
  • 利润表中其他业务利润是什么
  • 本期应补退税额怎么算
  • 收到补价时应确认收益,支付补价时不能确认收益
  • 可供分配利润包括所得税吗
  • 外购技术服务费包括哪些
  • 汇算清缴弥补以前年度亏损报表怎么填
  • 跨地区经营建筑企业预缴增值税可以先开票后预缴吗
  • 进项票已认证忘记开票
  • 什么叫金税四期呢?
  • 筹建期间职工福利费都要通过应付职工薪酬核算吗
  • 六税两费减半征收政策2022
  • 零申报的企业资产负债表
  • 股东分红纳入社会保险吗
  • 利润表申报本年怎么填
  • 残疾人就业保障金
  • 企业捐赠现金支出应在哪个项目反应
  • 折价处置抵押房地产的应当参照什么
  • 1697506445
  • 一般纳税人进货收到普票怎么做账
  • 母公司代发工资如何处理
  • 服务费发票可以部分红冲吗
  • 怎么跟银行谈停息挂账
  • 增值税减免是当月报下月冲吗
  • win10应用显示模糊发虚
  • windows账户名a
  • 开机速度慢是怎么回事
  • 初级会计应收账款例题
  • MacOS X Yosemite升级后postgresql启动报错的解决办法
  • php数组函数输出《咏雪》里有多少"片"字
  • vue3获取当前vue实例
  • 特拉凯城堡是哪个国家
  • php数组操作函数
  • 小规模企业现金怎样管理
  • 固定资产清理科目核算内容
  • vue的一些面试题
  • dhclient卡住
  • ps橡皮擦怎么擦的跟背景色一样
  • 到对公账户的钱能立马转出去吗
  • 帝国cms视频教程
  • github+hexo搭建博客
  • 进项税通俗易懂
  • 金蝶利润表为什么只有累计数没有本月数
  • 增值税一般纳税人是什么意思
  • 已计提的城建税有误,怎么办
  • 无票收入的增值税税率
  • 期初应收账款对应什么科目试算平衡
  • 诉讼费应计入什么会计科目
  • 资金账簿印花税减半政策
  • 固定资产后续支出计入的科目
  • 盈余公积的例子
  • 哪些费用可以入开办费
  • 支付技术转让费所得税处理
  • 重大水利工程建设
  • 开了发票就要交税吗?
  • 工程款打入个人账户扣税吗
  • 收到投资厂房有折旧的记账凭证怎么处理
  • 施工企业其他业务收入包括哪些
  • win8装机软件
  • 苹果macOS 14 正式发布
  • win7系统调亮度怎么调
  • centos vi命令
  • win7怎么连接手机上网
  • win7浏览器怎么升级到最新版
  • app塔防游戏
  • opengl 4.2
  • CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放
  • opengl怎么学
  • docker save -o
  • linux 进程监控
  • javascriptz
  • 在全盘搜索以win
  • js弹出提示窗口
  • android installer apk
  • 最简单的java设计
  • linux显示中文
  • 公允价值变动损益属于什么科目
  • 安徽税务发票查询入口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设