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

  • 电话号码正则表达式(电话号码正则表达式AABBCC)

    电话号码正则表达式(电话号码正则表达式AABBCC)

  • 苹果13快充是20w还是30w(苹果13快充是多少)

    苹果13快充是20w还是30w(苹果13快充是多少)

  • 荣耀50se语音助手可以语音唤醒吗(荣耀50se语音助手)

    荣耀50se语音助手可以语音唤醒吗(荣耀50se语音助手)

  • 网易云歌词大小怎么调节(网易云歌词大小手势)

    网易云歌词大小怎么调节(网易云歌词大小手势)

  • se有3d touch这个功能吗(iphone se 2020 3dtouch)

    se有3d touch这个功能吗(iphone se 2020 3dtouch)

  • 小米手环4不提醒消息(小米手环4不提醒更新)

    小米手环4不提醒消息(小米手环4不提醒更新)

  • hd3000相当于什么显卡(hd3000相当于什么n卡)

    hd3000相当于什么显卡(hd3000相当于什么n卡)

  • 电脑应该在实体店还是网上买(电脑到实体店买好还是网上买好)

    电脑应该在实体店还是网上买(电脑到实体店买好还是网上买好)

  • 华为nova7pro没有耳机孔吗(华为nova7pro没有红外线怎么开空调)

    华为nova7pro没有耳机孔吗(华为nova7pro没有红外线怎么开空调)

  • wps怎么画折线箭头(wps中怎么绘制折线图)

    wps怎么画折线箭头(wps中怎么绘制折线图)

  • 华为cdyan00是什么型号(cdyan00是华为哪个型号)

    华为cdyan00是什么型号(cdyan00是华为哪个型号)

  • 华为nova5pro尺寸长宽高(华为nova5pro尺寸长宽)

    华为nova5pro尺寸长宽高(华为nova5pro尺寸长宽)

  • oppor9是不是4g手机(oppor9不是双4g吗)

    oppor9是不是4g手机(oppor9不是双4g吗)

  • 大众点评的商家收费吗(大众点评的商家版)

    大众点评的商家收费吗(大众点评的商家版)

  • 华为mrxw09是全网通吗(华为mrx-w19是什么型号)

    华为mrxw09是全网通吗(华为mrx-w19是什么型号)

  • 华为mate20x5G能用联通卡吗

    华为mate20x5G能用联通卡吗

  • 增强网络信号的方法(增强网络信号的设备叫什么)

    增强网络信号的方法(增强网络信号的设备叫什么)

  • 抖音里边的大头视频怎么拍的?(抖音里面的大头贴在哪)

    抖音里边的大头视频怎么拍的?(抖音里面的大头贴在哪)

  • 华为怎么出厂设置(华为怎么出厂设置手机?)

    华为怎么出厂设置(华为怎么出厂设置手机?)

  • p30是50倍变焦吗(p30pro支持50倍变焦)

    p30是50倍变焦吗(p30pro支持50倍变焦)

  • ipad可以充电多少次(ipad可以充电多久)

    ipad可以充电多少次(ipad可以充电多久)

  • macpro开机黑屏(macpro开机黑屏没反应)

    macpro开机黑屏(macpro开机黑屏没反应)

  • 已解决ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: ‘C:\Use(备孕男的要吃叶酸吗? 已解决)

    已解决ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: ‘C:\Use(备孕男的要吃叶酸吗? 已解决)

  • BLINK AC1200U路由器怎么开启访客模式(ac1203路由器)

    BLINK AC1200U路由器怎么开启访客模式(ac1203路由器)

  • 我的Vue之旅 11 Vuex 实现购物车

    我的Vue之旅 11 Vuex 实现购物车

  • 营改增后房地产会计账务处理
  • 营业税加收滞纳金的规定
  • 出口免税收入的计税依据
  • 住宿发票规格型号一栏写什么
  • 软件开发增值税免税吗
  • 个人处置打包债权取得的收入
  • 行政事业单位收据样本
  • 应付账款发生额在哪方
  • 应交税费明细分类账图片
  • 企业所得税减免所得税额怎么算
  • 公园门票可以报销吗
  • 公司给另外一家公司投资
  • 原材料明细账余额为零怎么写
  • 月末税金及附加税金的账务处理
  • 法院执行款可以开发票吗
  • 融资租赁纳税人是指
  • 认缴制下收到股东转入的钱怎么入账
  • 企业新增股东
  • 银行存款利息的计算方法
  • 不超过500万元的固定资产
  • windows10如何设置密码
  • 固定资产的折旧是什么意思
  • 惠普笔记本电源适配器
  • 关闭windows安全中心拦截
  • php数组函数面试题
  • 退税到账怎么做账
  • pavsrv51.exe - pavsrv51是什么进程 有什么用
  • 医院的重要
  • 发生错误的原始凭证包括
  • vue项目中使用opencv
  • 收取逾期包装物押金怎么算税
  • 150m迷你型无线路由器怎么用
  • nlp工具箱
  • laravel sqlserver
  • 待处理财产损益会计分录
  • 小规模纳税人开专票需要交税吗
  • gpt3 transformer
  • 没有计提坏账如何披露
  • 基本数据结构包括哪些
  • 个人能去税务局开劳务费发票吗
  • 电子发票会自动上传吗
  • 房屋租赁需要计提印花税吗
  • 研发支出资本化计入什么科目
  • 进口卷烟消费税定额税率
  • 企业管理理费包括哪些
  • 企业应如何合理安排筹资期限的组合方式,优化资金结构
  • 研发产品入库
  • 咨询费如何缴税
  • 公益性捐赠支出计入什么科目
  • 资产处置损益在资产负债表哪里
  • 政府会计资产处置损益
  • mysql 大数据处理
  • win7系统ie浏览器怎么卸载重装
  • 服务器文件夹共享分组
  • 让Windows Server 2008设备驱动安装图文教程
  • vnc server apk
  • solaris 11.4
  • 优盘和硬盘
  • 平板电脑中的电池工作时是将什么能转化成了电能
  • alg.exe是什么程序
  • cpu numa
  • win7应用程序无法正常启动
  • win7开机假死
  • xp取消开机启动项
  • linux ora11g安装教程
  • JavaScript中的方法名不区分大小写
  • Cocos2dx 疯狂跑酷(CrazyRun)游戏项目解析
  • js开发组件
  • css主要解决什么问题
  • nodejs-websocket
  • javascript的
  • javascript entries
  • 基于javascript的毕业设计
  • jquery.cookie.js实现用户登录保存密码功能的方法
  • 税务局上班周末上班吗
  • 新办企业税务局注册流程
  • 下列关于消费税委托加工说法正确的是
  • 小微企业印花税减半政策
  • 纪律作风如何形容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设