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

  • 电热水龙头原理什么品牌好质量好又安全

    电热水龙头原理什么品牌好质量好又安全

  • 荣耀x20怎么设置护眼模式(荣耀x20怎么设置桌面时间)

    荣耀x20怎么设置护眼模式(荣耀x20怎么设置桌面时间)

  • 闲鱼怎么取消订单(闲鱼怎么取消订单退款)

    闲鱼怎么取消订单(闲鱼怎么取消订单退款)

  • 电脑微信文件夹储存在什么位置(电脑微信文件夹filestorage装的什么)

    电脑微信文件夹储存在什么位置(电脑微信文件夹filestorage装的什么)

  • oppo k7手机是多少赫兹(oppok7手机参数)

    oppo k7手机是多少赫兹(oppok7手机参数)

  • ipad爱奇艺打开是竖屏(ipad爱奇艺打开是黑白的怎么回事儿)

    ipad爱奇艺打开是竖屏(ipad爱奇艺打开是黑白的怎么回事儿)

  • 华为手机文字怎么设置(华为手机文字怎么换成中文)

    华为手机文字怎么设置(华为手机文字怎么换成中文)

  •   谷歌在哪里下载(谷歌在哪里登陆账号)

      谷歌在哪里下载(谷歌在哪里登陆账号)

  • 腾讯有哪些应用软件(腾讯有哪些应用商店)

    腾讯有哪些应用软件(腾讯有哪些应用商店)

  • 有对方qq密码能无痕登录吗(有对方qq密码能看空间吗)

    有对方qq密码能无痕登录吗(有对方qq密码能看空间吗)

  • cdy-an00是华为什么型号(华为cdy_an00怎么样)

    cdy-an00是华为什么型号(华为cdy_an00怎么样)

  • qq注册不安全怎么解决(qq注册不安全怎么注销)

    qq注册不安全怎么解决(qq注册不安全怎么注销)

  • ai新建图层快捷键(ai的新建图层)

    ai新建图层快捷键(ai的新建图层)

  • iphone11promax发烫原因(iphone11promax严重发热)

    iphone11promax发烫原因(iphone11promax严重发热)

  • vivox23双引擎闪充在哪(vivox23双引擎闪充失灵)

    vivox23双引擎闪充在哪(vivox23双引擎闪充失灵)

  • 索尼h800和h900区别(sonywh800和h900哪个好)

    索尼h800和h900区别(sonywh800和h900哪个好)

  • 苹果手机外音没声音什么原因(苹果手机外音没有了,耳机可以是怎么回事)

    苹果手机外音没声音什么原因(苹果手机外音没有了,耳机可以是怎么回事)

  • 苹果手机通话记录怎么没有历史记录(苹果手机通话记录删除了还能查到吗)

    苹果手机通话记录怎么没有历史记录(苹果手机通话记录删除了还能查到吗)

  • 1tb256g固态什么意思(256固态跟1tb 哪个好)

    1tb256g固态什么意思(256固态跟1tb 哪个好)

  • iphonexr电池容量多大(iphonexr电池容量掉的超快)

    iphonexr电池容量多大(iphonexr电池容量掉的超快)

  • 13.1.2系统怎么查找朋友(ios13在哪看)

    13.1.2系统怎么查找朋友(ios13在哪看)

  • 电话对方未接听什么意思(对方未接听,是否拨打对方手机)

    电话对方未接听什么意思(对方未接听,是否拨打对方手机)

  • 毒上买鞋可以退换货吗(毒上买鞋能退嘛)

    毒上买鞋可以退换货吗(毒上买鞋能退嘛)

  • cpu占用率过高怎么办(cpu占用率过高怎么清理)

    cpu占用率过高怎么办(cpu占用率过高怎么清理)

  • c4d全局光照在哪里(c4d全局光照在哪里打开)

    c4d全局光照在哪里(c4d全局光照在哪里打开)

  • JS - 生成随机数的方法汇总(不同范围、类型的随机数)(js生成随机数字和字母组合)

    JS - 生成随机数的方法汇总(不同范围、类型的随机数)(js生成随机数字和字母组合)

  • 纳税怎么算
  • 支付办公楼维修费
  • 金税盘服务费能抵税吗
  • 实际发生应收账款坏账时的会计处理
  • 企业中征码怎么办
  • 微商怎么收税
  • 用友怎么设置工龄工资
  • 资本公积与什么有关
  • 以固定资产换入原材料
  • 工程款的税是怎么扣除的?
  • 房地产企业开发成本科目明细
  • 房地产企业的收入信息披露范围进一步扩大
  • 个人独资企业个人所得税核定征收
  • 销售原材料的账务处理
  • 非独立核算的分公司是什么意思
  • 企业所得税如何申报操作
  • 劳务费增值税发票是劳务单位开吗
  • 研发费用进项税额需要转出吗
  • 发票报账的基本流程
  • 银行代收费业务会计分录
  • 报销单大写金额填写格式1000
  • 交易性金融资产和长期股权投资的区别
  • 公司一般户要做账吗
  • 注销怎么做账
  • 公司按揭购车
  • 个体工商户开服务类型发票怎么开的
  • 汽车厂家金融贴息 是贴利息的还是贴车价
  • 小规模纳税人的专票可以抵税吗
  • 微软推出windows1
  • 哪些收入要纳税
  • 税务发票盖章要求
  • 签订租赁合同的期限
  • 小区公共水电费要多少
  • kb4507449安装失败
  • pull-hi
  • 如何用wordpress
  • 销售固定资产利润率
  • php bi
  • wordpress portfolio
  • framework怎么用
  • 兼职老师工资怎么扣税
  • 一般纳税人能开1%的发票吗
  • php 文件传输
  • js怎么制作
  • 网络用语屠夫
  • php.ini中date.timezone设置详解
  • php开发程序
  • 金税盘开票如何增加商品编码
  • 支付版权使用费怎么记账
  • 法人转钱入公户要交税吗
  • 进项税额在贷方怎么办
  • 报销流程怎么走
  • 计提工会经费并上缴是什么意思
  • 无形资产的摊销计入什么科目
  • 工商年报资产状况公示还是不公示
  • 账务处理的种类有哪些
  • 差旅费所得税扣除标准2023
  • 应收账款管理应该收集哪些信息
  • 火车票进项抵扣需要认证吗
  • 固定资产折旧年限的最新规定2023
  • sql中的存储过程
  • sqlserver2000怎么用
  • windows集群运行
  • windows开发是什么
  • .msc是什么文件
  • win7系统无法安装谷歌怎么办
  • windows7网速慢怎么解决
  • win7系统安装软件重启电脑后就没了
  • 防止非法使用计算机,可口令
  • 如何修改win7电脑用户密码
  • linux系统开发环境
  • win10升级win1
  • bat批处理删除文件
  • ajax怎么用
  • 使用scp获取远程linux服务器上的文件 linux远程拷贝文件
  • python 详细
  • javascript包括在html中
  • android反编译smali
  • 大连税务登记app
  • 税控专用设备包括哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设