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

  • 微信运动看不到对方了(微信运动看不到对方了怎么恢复?)

    微信运动看不到对方了(微信运动看不到对方了怎么恢复?)

  • 滴滴顺路单是优先派单(滴滴顺路单有出行分吗)

    滴滴顺路单是优先派单(滴滴顺路单有出行分吗)

  • iphone开勿扰闹钟响吗(iphone开勿扰闹钟就响吗)

    iphone开勿扰闹钟响吗(iphone开勿扰闹钟就响吗)

  • 苹果钱包添加卡无效(苹果钱包添加卡片无法连接applepay)

    苹果钱包添加卡无效(苹果钱包添加卡片无法连接applepay)

  • 850w电源1小时用多少电(额定850w电源1小时用多少电)

    850w电源1小时用多少电(额定850w电源1小时用多少电)

  • 腾讯视频只看ta功能没有了吗

    腾讯视频只看ta功能没有了吗

  • 微信有扫描功能吗(如何制作微信二维码)

    微信有扫描功能吗(如何制作微信二维码)

  • 微信辅助多久可以辅助第二次(微信辅助多久可以弄一次)

    微信辅助多久可以辅助第二次(微信辅助多久可以弄一次)

  • 微信怎么发40秒视频的朋友圈(微信怎么发40秒的视频朋友圈)

    微信怎么发40秒视频的朋友圈(微信怎么发40秒的视频朋友圈)

  • 路由器对人体有伤害吗(路由器对人体有辐射吗应离开多远的距离)

    路由器对人体有伤害吗(路由器对人体有辐射吗应离开多远的距离)

  • 华为手机上方hd是什么意思怎样去掉(华为手机上方hd怎么关)

    华为手机上方hd是什么意思怎样去掉(华为手机上方hd怎么关)

  • ps的吸管工具怎么用(ps的吸管工具怎么吸成前景色)

    ps的吸管工具怎么用(ps的吸管工具怎么吸成前景色)

  • 签收几天自动确认收货(签收几天自动确认收货拼多多)

    签收几天自动确认收货(签收几天自动确认收货拼多多)

  • 小米9pro怎么设置一键锁屏(小米9pro怎么设置自动开关机)

    小米9pro怎么设置一键锁屏(小米9pro怎么设置自动开关机)

  • 淘宝优惠券删除了从哪里可以恢复(怎么把淘宝优惠券删除)

    淘宝优惠券删除了从哪里可以恢复(怎么把淘宝优惠券删除)

  • 淘宝店怎么参加双十一(淘宝店怎么参加双11活动)

    淘宝店怎么参加双十一(淘宝店怎么参加双11活动)

  • 4k屏可以调2k的吗(4k屏幕可以调低到2k分辨率吗)

    4k屏可以调2k的吗(4k屏幕可以调低到2k分辨率吗)

  • 数字信号是一种数字式的什么信号(数字信号是一种什么脉冲序列)

    数字信号是一种数字式的什么信号(数字信号是一种什么脉冲序列)

  • 腾讯ieg在哪(腾讯ieg百度百科)

    腾讯ieg在哪(腾讯ieg百度百科)

  • word去掉大量换行(word中如何去掉多余的换行符号)

    word去掉大量换行(word中如何去掉多余的换行符号)

  • 天天快报为什么提现不了(天天快报为什么停运)

    天天快报为什么提现不了(天天快报为什么停运)

  • 百慕大马利海滩鸟瞰图 (© Paul Zizka/plainpicture)(百慕大玛丽号)

    百慕大马利海滩鸟瞰图 (© Paul Zizka/plainpicture)(百慕大玛丽号)

  • 医疗机构销售药品需要销售记录吗
  • 税率3%变成10%
  • 小规模差额征税会计分录实例
  • 没有外币账户可以收外币吗
  • 增值税纳税申报表模板
  • 总公司汇总缴纳所得税升为一般纳税人分公司受影响吗
  • 工商年报最迟什么时候申报
  • 保证金可以挪用吗
  • 牛奶公司饲养奶牛生产牛奶
  • 一般纳税人无票收入会计分录
  • 罚款所得税调整
  • 超市里的摊位租金贵吗
  • 期初余额什么时候在借方什么时候在贷方
  • 企业借个人款该交税吗
  • 建筑工程属于开票项目吗
  • 企业挂靠税收市收取的标准是什么
  • 辅导期一般纳税人预缴增值税
  • 出口退税注销备注怎么填
  • 进项发票与销项发票差额是企业毛利润吗
  • 最新房产税费
  • 一般纳税人能开3个点的专票吗
  • 关于增值税的问题有哪些
  • 电子发票服务平台诺诺发票官网
  • 出口茶叶需要什么资质
  • 收到财政补贴收入贷记科目是
  • 差额增值税计算公式
  • sxgdsenu.exe - sxgdsenu是什么进程 有什么用
  • 王者荣耀中孙尚香怎么玩
  • 公司成立之初
  • php操作mysql数据库
  • 房产公司财务工作内容
  • 不动产经营租赁范围
  • 待摊费用每月怎么摊
  • 车辆运输费计入什么科目
  • 计提摊销的分录
  • 微信php开发教程
  • php reference
  • php关闭错误报告
  • php递归算法1加到100
  • vue watch监听localstorage变化
  • telnet命令大全
  • 国际货运代理存在的必要性有哪些方面
  • 稿费演出费等劳务收入算工资吗
  • 管家婆中已经过账的进货单怎么删除?
  • 员工宿舍的物业费要交个税吗
  • 办理税控盘
  • 购买保健食品
  • mysql启动器
  • nosql sql
  • 个体户不刻公章也要报税吗
  • 通行费发票增值税申报怎么填写
  • 计提投资性房地产折旧会计科目
  • 固定资产加速折旧最新政策2022
  • 流动比率计算公式是年初还是年末
  • 配电箱安装步骤及要求
  • 库存商品调价会计分录
  • 确定固定资产的标准
  • 主营业务利润率反映了企业的什么能力
  • 一个查看明日方舟的网站
  • win10系统环境设置
  • 优化什么建立生育支持政策体系
  • win10选择一个选项
  • mac文档怎么传给winds
  • windowsxp服务在哪里
  • 怎样让xp系统变得更加流畅
  • win8系统怎么搜索文件
  • centos6.8分区方案
  • window8系统桌面啥样的
  • win10系统office2007每次打开都要配置
  • win7如何设置多用户
  • Access to the path "LibraryUnityAssembliesUnityEngine.xml" is denied.
  • .json()
  • ExtJS Grid使用SimpleStore、多选框的方法
  • shell脚本编写步骤
  • class在js中的实际运用
  • 公司的完税证明必须打印吗
  • 国家税务总局里面怎么改办税人
  • 河北新农合怎么查询
  • 开地税发票的操作流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设