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

  • 微信可以设置特别关心吗(微信可以设置特别关心提示音吗)

    微信可以设置特别关心吗(微信可以设置特别关心提示音吗)

  • 飞书会议支持多少人(飞书会议使用说明)

    飞书会议支持多少人(飞书会议使用说明)

  • 小米蓝牙耳机左右不能同时配对(小米蓝牙耳机左边的连不上)

    小米蓝牙耳机左右不能同时配对(小米蓝牙耳机左边的连不上)

  • 智行和12306一样吗(智行12306和12306有什么区别)

    智行和12306一样吗(智行12306和12306有什么区别)

  • qq申诉成功凭证怎么获取(qq申诉成功凭证怎么弄)

    qq申诉成功凭证怎么获取(qq申诉成功凭证怎么弄)

  • 京东小程序不支持购买商品(京东小程序不支持购买是什么原因)

    京东小程序不支持购买商品(京东小程序不支持购买是什么原因)

  • 卡贴机能用多久(苹果卡贴机能用多久)

    卡贴机能用多久(苹果卡贴机能用多久)

  • 芒果TV账号信息查找方法(芒果tv账号信息异常)

    芒果TV账号信息查找方法(芒果tv账号信息异常)

  • 小米手机缓存数据可以清除吗(小米手机缓存数据怎么清理)

    小米手机缓存数据可以清除吗(小米手机缓存数据怎么清理)

  • 互联网服务器在哪个国家(互联网服务器的种类有哪些)

    互联网服务器在哪个国家(互联网服务器的种类有哪些)

  • 钉钉听课时长怎么改(钉钉听课时长怎么才能伪造)

    钉钉听课时长怎么改(钉钉听课时长怎么才能伪造)

  • 8x屏幕录制在哪儿(华为8x手机屏幕录制在哪里)

    8x屏幕录制在哪儿(华为8x手机屏幕录制在哪里)

  • 华为手机存储权限是什么意思(华为手机存储权限被拒绝在哪里开启)

    华为手机存储权限是什么意思(华为手机存储权限被拒绝在哪里开启)

  • 自己怎么退出微信群(自己怎么退出微信账号)

    自己怎么退出微信群(自己怎么退出微信账号)

  • 安卓区的号可以转到苹果吗(安卓区的号可以在苹果手机上登吗)

    安卓区的号可以转到苹果吗(安卓区的号可以在苹果手机上登吗)

  • 去iphone售后帮验机吗(苹果售后验证手机要钱吗)

    去iphone售后帮验机吗(苹果售后验证手机要钱吗)

  • 正在同时使用wifi和移动数据是什么意思

    正在同时使用wifi和移动数据是什么意思

  • iphone11是oled屏幕吗(苹果11是oled屏幕嘛)

    iphone11是oled屏幕吗(苹果11是oled屏幕嘛)

  • vue怎么添加图片(vue怎么显示图片)

    vue怎么添加图片(vue怎么显示图片)

  • 双卡设置在哪里(苹果手机双卡设置在哪里)

    双卡设置在哪里(苹果手机双卡设置在哪里)

  • 苹果耳机怎么调下一曲(苹果耳机怎么调左右声道)

    苹果耳机怎么调下一曲(苹果耳机怎么调左右声道)

  • 红米k20pro是双扬声器吗(红米k20pro双扬声器免root)

    红米k20pro是双扬声器吗(红米k20pro双扬声器免root)

  • 一个网络系统最重要的资源是(一个计算机网络典型系统可有哪两个子网组成)

    一个网络系统最重要的资源是(一个计算机网络典型系统可有哪两个子网组成)

  • nex3屏幕比例(nex3s屏占比)

    nex3屏幕比例(nex3s屏占比)

  • 苹果x电池健康怎么恢复(苹果x电池健康100但耗电快)

    苹果x电池健康怎么恢复(苹果x电池健康100但耗电快)

  • 苹果xs无法开机(苹果xs无法开机怎么办)

    苹果xs无法开机(苹果xs无法开机怎么办)

  • 如何找回Windows XP系统密码啊?(如何找回windows密钥)

    如何找回Windows XP系统密码啊?(如何找回windows密钥)

  • win10商店怎么换区(windows商店如何切换地区)

    win10商店怎么换区(windows商店如何切换地区)

  • 最新waymo数据集 百度网盘(wisdm数据集)

    最新waymo数据集 百度网盘(wisdm数据集)

  • 微信小程序中如何实现微信支付(微信小程序中如何打开不加检验文件的网页)

    微信小程序中如何实现微信支付(微信小程序中如何打开不加检验文件的网页)

  • 企业裁员补偿金标准是多少
  • 不在经营范围内开票会受到什么惩罚
  • 凭证日期小于当前会计期啥意思
  • 饮料工业发展前景如何
  • 高新企业季度企业所得税预征税率
  • 哪些政府补助属于国家
  • 开具增值税专用发票证明
  • 农产品初加工免征企业所得税
  • 企业间借贷利息规定
  • 承租人转租需要退押金吗
  • 抄税忘记了怎么办
  • 2021年路桥费抵扣最新政策
  • 变更财务负责人在网上变更流程
  • 前期认证相符且本期申报抵扣怎么填
  • 预收房款不征税发票
  • 以前年度加计扣除的税
  • 出售专利权属于什么科目
  • 待摊费用报价变更的会计处理怎么做?
  • 费用报销审批单填写样本图片
  • 应收账款结转下年要画红线吗
  • 个税是应发工资扣,还是实发工资扣
  • 工程服务发票税率3%
  • 咨询公司怎么交社保
  • 不动产进项税为什么不能抵扣
  • 硬盘的日常维护需要做到什么?
  • 内部控制制度包括哪些基本内容?
  • 有限公司注册资金多少好
  • 先发货后开票的销售业务流程
  • 笔记本如何打开无线网络开关
  • 小规模纳税人进口增值税怎么处理
  • Chon湖上空的低空云,苏格兰特罗萨克斯 (© Alistair Dick/Alamy)
  • 如何通过利润表看企业收益
  • PHP:JDToGregorian()的用法_日历函数
  • php正则表达式匹配链接
  • 哪些免征增值税
  • php自定义函数的语法格式
  • 出口退还增值税消费税政策
  • chat ty
  • 完美怎么用
  • php批量替换字符串
  • 账载折旧金额填哪个数
  • css中权重值是什么意思
  • 商品流通企业库存商品的核算方法有以下几种
  • 资本公积根据什么填列
  • 财务报表如何看
  • 购礼品送客户的文案
  • 哪些行业不适用税前加计扣除政策
  • 销售货物收到货款
  • 管理费用主要核算内容包括什么?
  • 销售劳务和销售货物的区别
  • 什么情况下适用简易程序
  • sql server 链接
  • 固定资产处置的净收入计入
  • 资产负债表调整事项
  • 免税收入不征税收入计入收入总额吗
  • 无形资产按取得时的什么入账
  • 退回工伤保险的现金流
  • 加工费发票可以抵扣吗
  • 收到供应商的赔偿款要开票吗
  • 专用发票下载怎么操作
  • 销售费属于期间费用
  • 年报从业人数和什么有关
  • 机票的抵扣进项税的注意事项
  • 收到投资厂房有折旧的记账凭证怎么处理
  • 在sql中执行一个创建数据表的脚本文件
  • 存储过程怎么理解
  • mac插hdmi没画面
  • windows10无法安装
  • Quick cocos2dx-Lua(V3.3R1)学习笔记(8) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧
  • cocos2dx4.0教程
  • 深入理解计算机系统
  • python相乘
  • 使用筷子就餐会不会传染乙肝病毒
  • 对外支付佣金需要代扣代缴印花税吗
  • 国税干部任前谈心谈话
  • 北京税务部门需要党员吗
  • 个人所得税是先交还是后交
  • 物业管理用房如何申请
  • 车辆购置税退税需要什么资料
  • 车船税优惠政策2022年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设