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

  • 交换机路由器光猫的连接顺序(交换机路由器)(交换机路由器光猫的连接顺序)

    交换机路由器光猫的连接顺序(交换机路由器)(交换机路由器光猫的连接顺序)

  • vivo手机智慧助手在哪里(vivo手机智慧助手怎么打开)

    vivo手机智慧助手在哪里(vivo手机智慧助手怎么打开)

  • 钉钉怎么改密码忘了原密码(钉钉怎么改密码电脑版)

    钉钉怎么改密码忘了原密码(钉钉怎么改密码电脑版)

  • 此电话号码无法用于进行验证(此电话号码无法用于进行验证.谷歌注册)

    此电话号码无法用于进行验证(此电话号码无法用于进行验证.谷歌注册)

  • cmnet是什么网络(cm网络是什么意思啊)

    cmnet是什么网络(cm网络是什么意思啊)

  • 淘宝pmlc查重准吗(淘宝查重准不准)

    淘宝pmlc查重准吗(淘宝查重准不准)

  • oppo怎么召唤小冰(oppo手机怎么召唤小冰)

    oppo怎么召唤小冰(oppo手机怎么召唤小冰)

  • 华为nova6开机键在哪(华为nova6开机键发烫是怎么回事)

    华为nova6开机键在哪(华为nova6开机键发烫是怎么回事)

  • 爱奇艺几个设备同时在线(爱奇艺几个设备在哪查)

    爱奇艺几个设备同时在线(爱奇艺几个设备在哪查)

  • 斗鱼什么时候成立的(斗鱼什么时候成年)

    斗鱼什么时候成立的(斗鱼什么时候成年)

  • 电源非模组化和全模组化有什么区别(电源非模组化和全模组化的区别)

    电源非模组化和全模组化有什么区别(电源非模组化和全模组化的区别)

  • 戴尔电脑如何强制关机(戴尔电脑如何强制重装系统)

    戴尔电脑如何强制关机(戴尔电脑如何强制重装系统)

  • 为什么单元格里输入的数字表示不出来(为什么单元格里的字显示不全)

    为什么单元格里输入的数字表示不出来(为什么单元格里的字显示不全)

  • ctrl加什么键可以打印(Ctrl加什么键可以会见选区?)

    ctrl加什么键可以打印(Ctrl加什么键可以会见选区?)

  • 长虹电视怎么下载软件(长虹电视怎么下载电视家)

    长虹电视怎么下载软件(长虹电视怎么下载电视家)

  • 手机qq怎么看别人特别关心我(手机QQ怎么看别人给我的备注)

    手机qq怎么看别人特别关心我(手机QQ怎么看别人给我的备注)

  • 怎么查看别人快手粉丝(怎么查看别人快手id)

    怎么查看别人快手粉丝(怎么查看别人快手id)

  • 三星手机来电设置在哪里(三星手机来电设置音量键静音)

    三星手机来电设置在哪里(三星手机来电设置音量键静音)

  • 华为手机怎么查看电池寿命(华为手机怎么查看最近使用的程序)

    华为手机怎么查看电池寿命(华为手机怎么查看最近使用的程序)

  • 教育管理统计软件服务没有开启(标准版教育管理统计软件安装2020)

    教育管理统计软件服务没有开启(标准版教育管理统计软件安装2020)

  • 车载蓝牙录小视频没声音(汽车连蓝牙录视频怎么能听到音乐)

    车载蓝牙录小视频没声音(汽车连蓝牙录视频怎么能听到音乐)

  • 数据库怎么安装(sql数据库安装)

    数据库怎么安装(sql数据库安装)

  • 荣耀20是否支持无线充电(荣耀20是否支持OTG)

    荣耀20是否支持无线充电(荣耀20是否支持OTG)

  • 手机QQ主题如何更换(手机qq主题怎么设置成自己的图片)

    手机QQ主题如何更换(手机qq主题怎么设置成自己的图片)

  • 永久封空间怎么看相册(永久封空间怎么解封)

    永久封空间怎么看相册(永久封空间怎么解封)

  • Windows 10如何开启网络代理(windows10如何开机启动软件)

    Windows 10如何开启网络代理(windows10如何开机启动软件)

  • 一般纳税人的做账流程
  • 应付账款里的暂估
  • 广告公司与广告公司合作的协议
  • 清卡抄税报税顺序
  • 更正以前年度费用账务处理
  • 做了销售之后的结果
  • 抵债资产涉税问题
  • 预缴税款的完税证明单
  • 保证金转租金的会计处理
  • 被收购的收入计什么科目
  • 库存商品进行非货币资产交换收入怎么确定
  • 交易性金融资产入账价值怎么计算
  • 出口退税退的是进项税还是销项税
  • 为什么中国没有工业革命
  • 免税发票还可以开吗
  • 烟酒发票可以抵扣所得税吗
  • 企业转让二手房增值税
  • 采购原材料运费会计分录
  • 个人所得税成本费用包括哪些
  • 半年付一次房租,房东一般提前多长时间催租
  • 汇算清缴的费用合计是什么
  • 电子汇票如何使用
  • 亏损的递延所得税怎么理解
  • 增值税差旅费可以扣除吗
  • 个税退手续费要多久到账
  • wifi认证失败怎么办
  • 怎样结转销售成本会计分录
  • mysqld-nt.exe - mysqld-nt是什么进程 有什么用
  • lvgl使用
  • 现金收入如何做账务处理
  • Symfony2实现在controller中获取url的方法
  • php远程下载源码
  • vuecli项目实战
  • 钢琴块小游戏在线玩
  • vue实例完整项目源码
  • php二分查找算法两种方法
  • vue路由怎么实现
  • 应付职工薪酬中社保费怎么记账
  • 人工费没有发票咋入帐
  • 公司借调员工
  • 销售折让的会计科目
  • 开具增值税专用发票的规定
  • php指定域名访问
  • 旅行社的增值税税率
  • 财务报表怎么重新编制
  • 公司年终奖要做多久才能享受
  • MySQL中distinct与group by语句的一些比较及用法讲解
  • 小规模代开增值税专用发票怎么操作?
  • 独立核算和非独立核算怎么查
  • 政府发的奖金需要交个税吗
  • 长期股权投资损失可以税前扣除吗
  • 退货回去需要把原包装保留吗
  • 折扣销售方式销售货物只要发票中有注明的折扣额
  • 去年多摊销了怎么办
  • 代开发票的弊端是如何体现的?
  • 哪些计入研发费用
  • 收据和收款收据的法律效力
  • 代收通行费不征税吗
  • 小企业会计核算论文
  • 收购票票样
  • 应纳税工资是应发还是实发
  • 递延所得税转回税率不一致
  • 在建工程转固规定
  • 会计准则 职工福利
  • linux临时目录在哪
  • cocos2dx 2.2.2
  • Node.js Sequelize如何实现数据库的读写分离
  • 用kotlin开发android
  • Linux中mysqldump命令实例详解
  • 中国现在很多网站
  • html模板 js
  • Linux删除大量文件
  • 隐藏磁盘空间
  • JavaScript replace(rgExp,fn)正则替换的用法
  • 手游炫酷
  • 山西省地方税务局 先进 文明 李家庄税务所
  • 江苏省无锡市国家电网客服电话是多少
  • 船舶吨税的税率怎么算
  • 增值税检查调整的账务处理
  • 不交社保申报个税有风险吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设