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

  • iqoo8防屏闪怎么开(iqoo8低亮度防屏闪)

    iqoo8防屏闪怎么开(iqoo8低亮度防屏闪)

  • 华为荣耀20用的啥屏(华为荣耀20用的什么芯片)

    华为荣耀20用的啥屏(华为荣耀20用的什么芯片)

  • qq怎么弄情侣空间(qq怎么弄情侣空间不显示)

    qq怎么弄情侣空间(qq怎么弄情侣空间不显示)

  • 苹果pro和max区别(苹果pro和max区别plus)

    苹果pro和max区别(苹果pro和max区别plus)

  • 华为商城退货排队验货多久(华为商城退货排队多久)

    华为商城退货排队验货多久(华为商城退货排队多久)

  • 苹果手表带无线充电吗(苹果手表带无线充电器吗)

    苹果手表带无线充电吗(苹果手表带无线充电器吗)

  • 菜鸟裹裹寄件损坏的理赔是怎样(菜鸟裹裹寄件损坏)

    菜鸟裹裹寄件损坏的理赔是怎样(菜鸟裹裹寄件损坏)

  • 苹果电脑除号是哪个键(苹果电脑的除号是哪一个键)

    苹果电脑除号是哪个键(苹果电脑的除号是哪一个键)

  • 1650和2060性能差距多大(1650和2060s差距)

    1650和2060性能差距多大(1650和2060s差距)

  • 爱奇艺的高清怎么设置(爱奇艺的高清怎么关)

    爱奇艺的高清怎么设置(爱奇艺的高清怎么关)

  • 华为7xgps信号弱怎么办(华为p10plusgps信号弱)

    华为7xgps信号弱怎么办(华为p10plusgps信号弱)

  • 微信账单被删了怎么查(微信账单被删了怎么选择)

    微信账单被删了怎么查(微信账单被删了怎么选择)

  • 苹果耳机有杂音滋滋怎么办(苹果耳机有杂音怎么修)

    苹果耳机有杂音滋滋怎么办(苹果耳机有杂音怎么修)

  • 惠普1025粉盒型号(惠普1025粉盒安装视频)

    惠普1025粉盒型号(惠普1025粉盒安装视频)

  • tasaloo是华为什么型号(tag-tloo华为什么型号)

    tasaloo是华为什么型号(tag-tloo华为什么型号)

  • hg221gs是千兆光猫么(光猫hg221gs百兆还是千兆)

    hg221gs是千兆光猫么(光猫hg221gs百兆还是千兆)

  • 手机怎么刷地铁卡(oppo手机怎么刷地铁)

    手机怎么刷地铁卡(oppo手机怎么刷地铁)

  • 一加7T是什么屏幕(一加7是什么屏幕)

    一加7T是什么屏幕(一加7是什么屏幕)

  • set协议的交易流程(简述set协议的基本交易流程)

    set协议的交易流程(简述set协议的基本交易流程)

  • 快手的连麦设置在哪(快手连麦设置门槛)

    快手的连麦设置在哪(快手连麦设置门槛)

  • 网卡不支持1000m宽带怎么办(网卡不支持5gwifi怎么办)

    网卡不支持1000m宽带怎么办(网卡不支持5gwifi怎么办)

  • 电子书怎么用(电子书怎么用语音听)

    电子书怎么用(电子书怎么用语音听)

  • 静态页面和动态页面区别(静态页面和动态页面与用户交互功能如何实现)

    静态页面和动态页面区别(静态页面和动态页面与用户交互功能如何实现)

  • 闪送如何快速抢到单(闪送如何快速抢单)

    闪送如何快速抢到单(闪送如何快速抢单)

  • 电力猫的原理和缺陷(电力猫的原理是什么)

    电力猫的原理和缺陷(电力猫的原理是什么)

  • 如何解决Win7系统设置了自动睡眠但又自动恢复到默认禁用?(如何解决win7系统蓝牙接收模块影响电脑蓝屏)

    如何解决Win7系统设置了自动睡眠但又自动恢复到默认禁用?(如何解决win7系统蓝牙接收模块影响电脑蓝屏)

  • 深究Python中的asyncio库-线程并发函数

    深究Python中的asyncio库-线程并发函数

  • 纳税人证明模板
  • 税控盘扣税缴税分录怎么写
  • 非税收入一般缴款书一式几联
  • 小规模纳税人预缴税款怎么填申报表
  • 外汇结汇成人民币违法吗
  • 企业增资的分录怎么写
  • 纳税人多缴税款的退还期限
  • 专项用途财政资金纳税调整规则
  • 企业多缴纳所得税怎么办
  • 租赁厂房算什么费用
  • 销项税额与进项税额区别
  • 销售退回怎么开票
  • 公司注销时存货计税依据
  • 车船税在哪个科目下
  • 报销抵扣联和发票联都需要吗
  • 收购企业收购方和被收购方如何做账?
  • 生产企业的免抵退纳税申报,在财务做销售收入账务后
  • 滞留海关发票是谁开
  • 个人所得税应纳税额计算表图片
  • 虚增利润
  • 丢失空白发票怎么处罚
  • kb4532945安装失败
  • phpstudy如何查看错误日志
  • 企业汇算清缴怎么退税
  • 对外支付企业所得税计税依据
  • 取得交易性金融资产的交易费用
  • 承兑汇票和现汇
  • 鲁棒性分析方法
  • html动画教程
  • sql语句的基本用法
  • 猿创部落是干什么的
  • [深度学习] fast-reid入门教程
  • 长投转可供
  • 账面价值账面余额摊余成本
  • 对公账户和私人账户怎么区分
  • python列表排序sorted
  • dedecms默认用户名
  • 建筑工地仓库管理流程
  • 车辆购置税能否融资租赁
  • 无法支付款项是否缴纳增值税
  • 建筑企业预缴
  • 生产成本怎么结账
  • 个体工商户属于个人还是企业
  • 医院执行政府会计制度操作指南 .pdf
  • 为什么收款金额跟实时入帐金额会不一样农村信用社
  • 建筑公司算不算企业
  • 劳动仲裁赔偿款会计分录
  • 工业企业成本一般占收入的比例
  • 视同销售收入是纳税调整项目吗?
  • 加油卡充值可以开增值税专用发票吗
  • 在软件中的操作有哪些
  • 光伏发电计费问题
  • 养老保险如何记算
  • 销售折扣销售方会计处理
  • 政府补助的会计准则
  • 缴纳文化事业建设费的单位应按照提供广告服务
  • 发票对方没有上传,无法勾选发票要怎么办
  • 小规模纳税人所得税优惠政策2023
  • 实收资本未到账减资要交税吗
  • 企业营运能力分析
  • 银行退票业务
  • 应收帐款 发票
  • 粘贴板有问题不能粘贴怎么处理
  • win8系统如何安装软件
  • eve是什么文件
  • win8桌面右键无法使用
  • WIN10补丁无法卸载
  • linux如何安装软件教程
  • cocos2dx ccbreader内存泄露
  • threejs加载obj模型颜色不对
  • three.js dispose
  • 网页的css
  • Node.js中的全局对象有
  • Unity3d中EventTrigger的封装
  • 世界坐标转换成屏幕坐标
  • java中主要使用unicode编码方式
  • android入门教程
  • 带领大家学习javascript基础篇(一)之基本概念
  • 成都税务二维码扫描
  • blueerdos和鄂尔多斯区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设