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

  • 小米手环华为手机可以用吗(小米手环华为手机怎么绑定)

    小米手环华为手机可以用吗(小米手环华为手机怎么绑定)

  • 钉钉怎么认证企业(钉钉怎么认证企业成员)

    钉钉怎么认证企业(钉钉怎么认证企业成员)

  • 淘宝什么情况下会禁言(淘宝什么情况下要交保证金)

    淘宝什么情况下会禁言(淘宝什么情况下要交保证金)

  • 微信发朋友圈屏蔽别人,别人知道吗(微信发朋友圈屏蔽了别人还能看到吗)

    微信发朋友圈屏蔽别人,别人知道吗(微信发朋友圈屏蔽了别人还能看到吗)

  • word分节符在哪里找(word分节符在哪里删除)

    word分节符在哪里找(word分节符在哪里删除)

  • 微信头像不清晰解决办法(微信头像不清晰,点开查看又是清晰的)

    微信头像不清晰解决办法(微信头像不清晰,点开查看又是清晰的)

  • 在word中将整个文档选定的快捷键是(在word文档中,如果要把整篇文章)

    在word中将整个文档选定的快捷键是(在word文档中,如果要把整篇文章)

  • 华为手机相机黑屏闪退(华为手机相机黑白色怎么调回来)

    华为手机相机黑屏闪退(华为手机相机黑白色怎么调回来)

  • 剪映音乐解析失败怎么回事(剪映音乐解析失败是什么意思)

    剪映音乐解析失败怎么回事(剪映音乐解析失败是什么意思)

  • oppor15支持红外遥控吗(oppor15有红外)

    oppor15支持红外遥控吗(oppor15有红外)

  • 如何将剪贴画设置为四周型环绕(剪贴画的图片样式怎么设置)

    如何将剪贴画设置为四周型环绕(剪贴画的图片样式怎么设置)

  • 华为手机擦除数据后别人能用吗(华为手机擦除数据后锁屏密码还在吗)

    华为手机擦除数据后别人能用吗(华为手机擦除数据后锁屏密码还在吗)

  • 路由器一会有网一会没网怎么回事(新的路由器怎么设置才能上网)

    路由器一会有网一会没网怎么回事(新的路由器怎么设置才能上网)

  • vivox27的ai键干嘛用的(vivox27手机ai键)

    vivox27的ai键干嘛用的(vivox27手机ai键)

  • 旁白有什么用(旁白旁白)

    旁白有什么用(旁白旁白)

  • 去哪儿网退款多久到自己卡上(去哪儿网退款已办理为何迟迟不到账)

    去哪儿网退款多久到自己卡上(去哪儿网退款已办理为何迟迟不到账)

  • 苹果看视频卡顿怎么办(苹果看视频卡顿什么原因)

    苹果看视频卡顿怎么办(苹果看视频卡顿什么原因)

  • 手机数据漫游怎么开(手机数据漫游怎么找)

    手机数据漫游怎么开(手机数据漫游怎么找)

  • ui前端设计流程是什么(ui前端开发是什么)

    ui前端设计流程是什么(ui前端开发是什么)

  • 淘宝签到红包怎么没有了(淘宝签到红包怎么签才能大一点)

    淘宝签到红包怎么没有了(淘宝签到红包怎么签才能大一点)

  • g4500是第几代cpu(g4590是几代)

    g4500是第几代cpu(g4590是几代)

  • 如何删除收藏的内容(如何删除收藏的作品)

    如何删除收藏的内容(如何删除收藏的作品)

  • 小米8透明探索版防水吗(小米8透明探索版和小米8的区别)

    小米8透明探索版防水吗(小米8透明探索版和小米8的区别)

  • 5g比4g快多少(5g比4g快多少实测)

    5g比4g快多少(5g比4g快多少实测)

  • 金税盘抵减增值税的账务处理
  • 租厂房土地使用税
  • 文化事业建设费减免政策
  • 手工现金日记账怎么转下一页
  • 主营业务收入明细表格模板
  • 投资收益属于什么账户
  • 房租押金不退还怎么处理
  • 个税专项扣除中途贷款改租房
  • 教育服务增值税纳税义务发生时间
  • 检测费属于什么税目
  • 将承兑汇票背书怎么操作
  • 向非金融企业借款200万元
  • 营改增后受托代销手续费税率是多少?
  • 支付广告费要交增值税吗
  • 收到投资者投入设备一台,价值100000元
  • 增值税普通发票税率
  • 2019年出租车
  • 同一控制下企业合并权益抵消
  • 网络销售平台优势有哪些
  • 医生规培生补贴每年多少钱
  • 前任会计很多错账
  • win7系统为什么没有虚拟光驱
  • 认证未抵扣的发票购买方能开红字信息表吗
  • 键盘灯无法开启
  • Win10版本21H2卡死
  • 职工薪酬可能计入什么科目
  • 分配利润的会计科目
  • uniapp自定义组件模式
  • 应收票据影响现金流吗
  • php的什么函数可以判断变量是否存在
  • 冰雪节上的冰雕图片
  • 怎么用云服务
  • 收回以前年度款项如何处理
  • java中ne
  • 达摩院 2021
  • 关系代数关系运算
  • 预缴2%
  • 应付票据应付利息
  • 一般纳税人增值税怎么做账务处理
  • 有什么是即征即退税的
  • 第9章 内存模型分析
  • 企业并购的主要特征是a扩大企业规模
  • 织梦标签教程
  • 入库时的会计分录
  • 小规模纳税人现代服务税率
  • 企业月末在产品数量变化不大时,最适宜
  • 增值税发票抵扣期限是多久
  • 小规模做账要做应交税费吗
  • sql service 2008 数据库还原
  • 怎样计算主营业务收入
  • 假如出口收汇的钱怎么办
  • 设计公司发生的设计费怎么入账
  • 收到广告费分录
  • 在建的工程收到的发票
  • 银行存款利息计算器在线计算器
  • 期末没有结账成本怎么办
  • 质量有问题不给退怎么办
  • sqlserver数据类型怎么用
  • Linux服务器中MySQL远程连接的开启方法
  • window系统怎么更新版本
  • 2003怎么创建用户
  • windows自动启动设置
  • linux sed -s
  • winxp0000007b修复
  • win8显示屏亮度调节
  • win7系统运行怎么打开
  • Win10系统安装步骤
  • tf-idf例题
  • 如何让批处理文件运行不显示
  • android线程间通信的几种方法
  • javascript的dom
  • JS backgroundImage控制
  • Android网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合
  • 安装了python2.7和3.6怎么切换版本
  • javascript函数
  • jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
  • 增值税征税范围口诀
  • 民办非企业暂行
  • 税务全面从严治党工作会议讲话稿
  • 印花税零申报表怎么填步骤
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设