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

  • 动态网页设计网站上线前,你得准备好“虚拟主机”、“域名”、“备案”三套

    动态网页设计网站上线前,你得准备好“虚拟主机”、“域名”、“备案”三套

  • 微信怎么交养老保险(微信怎么交养老保险网上怎么交费)

    微信怎么交养老保险(微信怎么交养老保险网上怎么交费)

  • 荣耀桌面时间日期天气显示怎么设置(荣耀桌面时间日期天气显示怎样设置,长按没有反应)

    荣耀桌面时间日期天气显示怎么设置(荣耀桌面时间日期天气显示怎样设置,长按没有反应)

  • 红米k30如何设置呼吸灯(红米k30如何设置永不锁屏)

    红米k30如何设置呼吸灯(红米k30如何设置永不锁屏)

  • 华为手机怎么开启陌生电话拦截(华为手机怎么开热点)

    华为手机怎么开启陌生电话拦截(华为手机怎么开热点)

  • 当前网络请求过于频繁(当前网络请求过于频繁是什么意思)

    当前网络请求过于频繁(当前网络请求过于频繁是什么意思)

  • 怎样关闭华为手机壁纸更新(怎样关闭华为手机智慧推荐)

    怎样关闭华为手机壁纸更新(怎样关闭华为手机智慧推荐)

  • 红米手机为什么下载不了微信(红米手机为什么音量键会自动跳)

    红米手机为什么下载不了微信(红米手机为什么音量键会自动跳)

  • 冰凉贴能给手机散热吗(冰凉贴能给手机用吗)

    冰凉贴能给手机散热吗(冰凉贴能给手机用吗)

  • 华为p30上市时间(华为p30上市时间和价格)

    华为p30上市时间(华为p30上市时间和价格)

  • 美团代付能看到地址吗(美团代付能看到什么信息)

    美团代付能看到地址吗(美团代付能看到什么信息)

  • 手机发视频对方听不见声音(手机发视频对方听不到声音)

    手机发视频对方听不见声音(手机发视频对方听不到声音)

  • 华为p20pro是什么处理器(华为p20pro是什么时候出的)

    华为p20pro是什么处理器(华为p20pro是什么时候出的)

  • ps图像大小调整快捷键(ps图像大小调整正方形)

    ps图像大小调整快捷键(ps图像大小调整正方形)

  • dx12怎么开启(如何开启dx12u)

    dx12怎么开启(如何开启dx12u)

  • 学习强国怎么看别人的积分

    学习强国怎么看别人的积分

  • 限制群搜索有啥用(什么叫限制群搜索)

    限制群搜索有啥用(什么叫限制群搜索)

  • 独立显卡有vga接口吗(独立显卡vga接口和hdmi接口)

    独立显卡有vga接口吗(独立显卡vga接口和hdmi接口)

  • 小爱同学为什么不能放音乐了(小爱同学为什么连接不上蓝牙)

    小爱同学为什么不能放音乐了(小爱同学为什么连接不上蓝牙)

  • 如何看美团一年总花费(如何看美团一年的总消费)

    如何看美团一年总花费(如何看美团一年的总消费)

  • b站弹幕发了看不到了(b站发出的弹幕)

    b站弹幕发了看不到了(b站发出的弹幕)

  • 美图秀秀如何抠图手机(美图秀秀如何抠图人像)

    美图秀秀如何抠图手机(美图秀秀如何抠图人像)

  • vue 遍历数组(vue遍历数组)

    vue 遍历数组(vue遍历数组)

  • 走进Vue【四】导航守卫和路由原信息详解(vue导航解析流程)

    走进Vue【四】导航守卫和路由原信息详解(vue导航解析流程)

  • Python---time模块(pythontime模块)

    Python---time模块(pythontime模块)

  • 社保由税务局统一征收的地区
  • 税法的分类都有什么
  • 金税盘维护费应该计入什么科目
  • 以前年度损益调整在借方是什么意思
  • 专票小数点没打印齐能用吗
  • 分公司报增值税吗
  • 物流托运不给发货怎么办
  • 粮食收购发票 票样
  • 小规模纳税人可以抵扣进项税吗
  • 机器不生产计提折旧吗
  • 挂靠建筑公司企业所得税怎么交?
  • 保险公司返点啥意思
  • 支付境外个人佣金
  • 固定资产进项票能抵扣吗
  • 客户付货款给我们公司备注往来结算款
  • 公司控股的公司下子公司有哪些
  • 电脑有些进程关不掉
  • 怎么找回被册的软件
  • 王者荣耀如何充值退款
  • 在windows中,经常有一些菜单选项呈暗灰色
  • 金银镶嵌首饰在哪个环节交消费税
  • 固定资产出售收入属于什么收入
  • 单位给个人报销计入什么科目
  • win10关闭端口号
  • 购入的无形资产
  • 进程mmc.exe
  • 最小的固态硬盘多大尺寸
  • 为什么磁盘会消失
  • 支付国外佣金税率是多少
  • PHP:imagefilledarc()的用法_GD库图像处理函数
  • 增值税专用发票的税率是多少啊
  • framework4.0怎么打开
  • 免费设备投放项目
  • 未确认融资费用报表填在哪个科目
  • php语言设计模式之单例模式
  • 定时器计数器实验报告
  • php分层架构
  • vue.js in action
  • apache trace
  • 一般企业预缴税额怎么算
  • 个体生产经营所得优惠政策
  • 异地工程预缴税款时间
  • 为什么增值税申报表保存不了
  • 企业增值税发票税率是多少
  • 以前年度的应交税费贷方怎么调平
  • mysql行锁的作用
  • 一般纳税人给小规模开普票的税率
  • 个税跨月更正申报怎么做
  • 材料成本差异的超支与节约
  • 支付增值税税控系统技术维护费用
  • 无票收入需要缴纳文化事业建设税吗
  • 让渡资产使用权收入属于收入吗
  • 生产企业库存商品怎么做分录
  • 车辆上牌的费用应付多少?
  • Centos 7.3下SQL Server安装配置方法图文教程
  • 阿里云安装apache
  • win2003安装
  • unix系统什么样子
  • 分布式交互
  • Mac OS X El Capitan公测版下载地址及安装教程图解
  • macbookair cpu
  • 苹果笔记本安装win10
  • linux cr3
  • Android LayoutInflater原理分析,带你一步步深入了解View(一)
  • 怎样从零开始
  • bat批处理脚本教程
  • 风格的多样性举例说明
  • opengl光照算法
  • 使用一串代码
  • Node.js中的全局对象有
  • linux随机数生成1到100
  • android design库
  • 利用python做一个文字小游戏
  • unity text
  • 安卓下载功能
  • android中toast用法
  • 信息咨询费包括什么费用
  • 发票上的税额由谁填写
  • 农民专业合作社法
  • 上海买新房办贷款流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设