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

  • 活动运营二三事,如何做好活动产品(活动运营一般涉及四个方面)

    活动运营二三事,如何做好活动产品(活动运营一般涉及四个方面)

  • 红米note11屏幕尺寸(红米note11系列屏幕)

    红米note11屏幕尺寸(红米note11系列屏幕)

  • 荣耀手机怎么关闭防误触功能(荣耀手机怎么关闭纯净模式)

    荣耀手机怎么关闭防误触功能(荣耀手机怎么关闭纯净模式)

  • 转转保证金可以退吗(转转保证金可以提现吗)

    转转保证金可以退吗(转转保证金可以提现吗)

  • 苹果8前置摄像头像素多少(苹果8前置摄像头黑屏)

    苹果8前置摄像头像素多少(苹果8前置摄像头黑屏)

  • 华为p40怎么关机(华为p40怎么关机重启一下)

    华为p40怎么关机(华为p40怎么关机重启一下)

  • 主板电源线怎么拔(主板电源线怎么拆)

    主板电源线怎么拔(主板电源线怎么拆)

  • 安卓cajviewer用不了(cajviewer安卓手机版不能使用)

    安卓cajviewer用不了(cajviewer安卓手机版不能使用)

  • 华为p40pro是多少倍变焦(华为p40pro是多少w快充)

    华为p40pro是多少倍变焦(华为p40pro是多少w快充)

  • oppor11什么时候出来的(oppor11什么时候上市的销量)

    oppor11什么时候出来的(oppor11什么时候上市的销量)

  • 路由器隐藏了怎么连接(路由器隐藏了怎么恢复手机)

    路由器隐藏了怎么连接(路由器隐藏了怎么恢复手机)

  • 快手注销了还能找回来吗(快手注销了还能登录吗)

    快手注销了还能找回来吗(快手注销了还能登录吗)

  • 华为matex发布时间

    华为matex发布时间

  • 对讲机上sp什么意思(对讲机上的spk是什么意思)

    对讲机上sp什么意思(对讲机上的spk是什么意思)

  • 淘宝会员名在哪(淘宝怎么开会员)

    淘宝会员名在哪(淘宝怎么开会员)

  • 芒果会员可以几个人用(芒果会员可以几个人用电脑)

    芒果会员可以几个人用(芒果会员可以几个人用电脑)

  • 压缩包是什么能删除吗(压缩包是什么有用吗)

    压缩包是什么能删除吗(压缩包是什么有用吗)

  • qq音乐怎样增加qq成长值(qq音乐怎么加)

    qq音乐怎样增加qq成长值(qq音乐怎么加)

  • 360影视如何下载视频(360影视怎么下载不了电视剧)

    360影视如何下载视频(360影视怎么下载不了电视剧)

  • QQ邮箱为什么收不到邮件(qq邮箱为什么收不到邮件)

    QQ邮箱为什么收不到邮件(qq邮箱为什么收不到邮件)

  • com是什么意思(come on是什么意思)

    com是什么意思(come on是什么意思)

  • 如何在 Linux 上下载和安装Steam(linux怎么操作)

    如何在 Linux 上下载和安装Steam(linux怎么操作)

  • dotnetfx.exe是什么进程可以终止吗(dotnetfx2.0)

    dotnetfx.exe是什么进程可以终止吗(dotnetfx2.0)

  • fsg.exe是什么进程 作用是什么  fsg进程查询(igfxem.exe是什么进程)

    fsg.exe是什么进程 作用是什么 fsg进程查询(igfxem.exe是什么进程)

  • 自定义修改el-talbe show-overflow-tooltip的样式(自定义修改器)

    自定义修改el-talbe show-overflow-tooltip的样式(自定义修改器)

  • testparm命令  测试Samba的设置是否正确无误(检测命令)

    testparm命令 测试Samba的设置是否正确无误(检测命令)

  • 存货盘亏进项税额转出是什么意思
  • 全国增值税发票服务平台
  • 研发活动计入当期损益怎么计算
  • 提取法定盈余公积是从净利润中提取吗
  • 公司基本户里的钱有利息吗
  • 固定资产清理时残值怎么处理
  • 研究开发费用资本化和费用化
  • 公司给离职员工多发工资怎么办
  • 增值税发票选择确认平台勾选注意事项
  • 预提费用账户期末
  • 销售承兑现金会退回来吗
  • 产品成本核算需要经过哪些程序
  • 企业递延所得税费用的计算公式
  • 多扣了离职人员的钱
  • 原来已入帐的款现在收回帐务处理?
  • 开具正规发票和不开发票对企业纳税的影响有什么不同?
  • 员工报销医药费计入什么费用
  • 三万以下免税如何开票
  • 银行承兑汇票承兑手续费是多少
  • 其他应付款注销时怎么冲平
  • 户外广告经营总额
  • win10专业版虚拟内存怎么设置
  • mac如何改变用户名
  • mac电脑command键快捷设置
  • Win10家庭版安装教程
  • 汇算清缴工资薪金支出包含社保费吗
  • 简易征收增值税怎么算
  • 企业固定资产出售账务处理
  • php详细安装步骤
  • 备用金冲销的会计分录
  • vue大屏组件库
  • 至极加速
  • 国税0申报如何网上申报
  • 销售方红字发票账务处理
  • wordpress注册界面
  • 购货方开具红字发票怎么做账
  • 格雷厄姆岛
  • 月末账务处理流程分录例题
  • 服务业的增值税
  • Linux | 将SpringBoot+Vue项目部署到服务器上
  • PHP magento后台无法登录问题解决方法
  • 进项税额计入其他流动资产
  • 织梦怎么导入数据库
  • 收到的销项负数发票如何申报
  • 个人所得税申报操作流程
  • 城建税小规模纳税人
  • 小型微利企业所得税优惠政策
  • 日记总账的适用范围
  • 贸易公司成本如何计算
  • 用友t3建账行业性质怎么选
  • 制造费用期末有余额在借方
  • 库存现金主要账目有哪些
  • 辞退福利的会计分录怎么写
  • 外币转入账户什么意思
  • 第三方代缴社保合法吗最新规定
  • 外聘人员个人简历
  • 单位之间借款还款怎么写
  • 服务性的行业有哪些
  • sql server数据库中的null(空值)
  • sql2005win10安装教程
  • sql怎么分组查询
  • win8无法进入系统
  • services.exe修改注册表
  • windows使用cmd运行程序
  • linux vi命令详解菜鸟教学
  • win7屏幕颜色不正常
  • ubuntu20怎么连接蓝牙鼠标
  • win7桌面整理软件
  • centos7.6桌面版安装教程
  • win7任务栏高度可以改变
  • window10稳定版
  • win10预览版21390
  • ,linux
  • cocos2d开发的知名游戏
  • linux如何配置jdk
  • javascript ES6 新增了let命令使用介绍
  • python文件描述符
  • python跑出异常
  • 天津环保网站官网
  • 我各位一个关于网上申报增值税所得税的申报流
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设