当前位置: 首页 > ds >正文

根据窗口大小自动调整页面缩放比例,并保持居中显示

vue 项目

直接上代码

图片u1.png 是个背景图片                                    图片u2.png 是个遮罩

                       

<template><div id="app"><div class="viewBox"><divclass="screen":style="{ transform: 'translate(-50%,-50%) scale(' + scale + ')' }"><div class="main"><router-view></router-view></div></div></div></div>
</template>
<script>
export default {data() {return {scale: 1,};},mounted() {//立即执行显示分辨率设置方法this.setScreen();window.addEventListener("resize", this.setScreen.bind(this));},methods: {setScreen() {// 可视区域的尺寸let visibleWidth = window.innerWidth;let visibleHeight = window.innerHeight;// 手动配置的面板尺寸let manualWidth = 1920;let manualHeight = 1080;// 计算横向和纵向的缩放系数var widthPercentage = (1.0 * visibleWidth) / manualWidth;var heightPercentage = (1.0 * visibleHeight) / manualHeight;// 取得最小缩放系数this.scale = Math.min(widthPercentage, heightPercentage);},},
};
</script><style lang="scss" scoped>
#app {user-select: none;cursor: pointer;position: relative;width: 100vw;height: 100vh;background-image: url("~@/assets/u1.png");background-size: 100% 100%;background-repeat: no-repeat;pointer-events: all;.viewBox {position: relative;width: 100vw;height: 100vh;background-image: url("~@/assets/u2.png");background-size: 100% 100%;background-repeat: no-repeat;.screen {position: absolute;left: 50%;top: 50%;z-index: 2;width: 1920px;height: 1080px;overflow: hidden;.header {position: absolute;top: 0;left: 0;width: 100%;height: 110px;pointer-events: none;z-index: 10;}.main {position: absolute;top: 0;left: 0;width: 100%;height: 1080px;overflow: hidden;z-index: 5;}}}
}
*,
body,
html {margin: 0;padding: 0;
}
</style>

HTML 页面

<%@page pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>自适应缩放页面</title><style>*,body,html {margin: 0;padding: 0;}.screen {position: absolute;left: 50%;top: 50%;z-index: 2;width: 1920px;height: 1080px;overflow: hidden;transform: translate(-50%, -50%) scale(1);transform-origin: center center;}.header {position: absolute;top: 0;left: 0;width: 100%;height: 110px;pointer-events: none;z-index: 10;}.main {position: absolute;top: 100px;left: 20px;width: 100%;height: 1080px;overflow: hidden;z-index: 5;}</style>
</head>
<body><div class="screen" id="screen"><div class="header"></div><div class="main" id="main"><!-- 这里可以放置你的路由视图内容 --><h1>欢迎来到自适应缩放页面</h1><p>这是一个示例内容,你可以在这里放置你的页面内容。</p></div>
</div><script>// 初始缩放系数计算document.addEventListener('DOMContentLoaded', function() {// 初始化缩放系数let scale = 1;// 设置初始缩放function setScreen() {console.log("1234856")// 可视区域的尺寸const visibleWidth = window.innerWidth;const visibleHeight = window.innerHeight;// 手动配置的面板尺寸const manualWidth = 1920;const manualHeight = 1080;// 计算横向和纵向的缩放系数const widthPercentage = visibleWidth / manualWidth;const heightPercentage = visibleHeight / manualHeight;// 取得最小缩放系数scale = Math.min(widthPercentage, heightPercentage);// 应用缩放const screenElement = document.getElementById('screen');// screenElement.style.transform = `translate(-50%, -50%) scale(${scale})`;screenElement.style.transform = `translate(-50%, -50%) scale(`+ scale + `)`;}// 立即执行显示分辨率设置方法setScreen();// 监听窗口大小变化window.addEventListener('resize', setScreen);});
</script>
</body>
</html>
http://www.xdnf.cn/news/4808.html

相关文章:

  • Python程序,输入IP,扫描该IP哪些端口对外是开放的,输出端口列表
  • Vue生命周期脚手架工程Element-UI
  • 经济体制1
  • http重新为https
  • 基于FPGA婴儿安全监护系统(蓝牙小程序监测)
  • 2025年渗透测试面试题总结-某服面试经验分享(附回答)(题目+回答)
  • R 语言机器学习:为遥感数据处理开启新视角
  • 二元随机响应(Binary Randomized Response, RR)的翻转概率
  • flink超时未揽收单量统计
  • 【AI提示词】马斯洛需求分析专家
  • 【Linux】socket网络编程之UDP
  • cursor平替,试试 vscode+cline+openrouter 的方案,还能自定义 mcp-server 教程大纲
  • 【算法-链表】链表操作技巧:常见算法
  • 元宇宙虚拟展厅如何制作?
  • 华为网路设备学习-21 路由过滤(filter-policy)
  • 微服务不注册到nacos的方法
  • HTML9:页面结构分析
  • 初识Linux · 传输层协议TCP · 上
  • 坐标系与坐标系数转换
  • 接口自动化测试框架详解(pytest+allure+aiohttp+ 用例自动生成)
  • 一文读懂Nginx应用之 HTTP负载均衡(七层负载均衡)
  • 记录微信小程序掉起半屏失效问题
  • 带你玩转 Flink TumblingWindow:从理论到代码的深度探索
  • 使用 CDN 在国内加载本地 PDF 文件并处理批注:PDF.js 5.x 实战指南
  • QMK键盘固件自定义指南 - 打造你的专属键盘体验
  • Python开发之os.path的常用操作
  • Vim 编辑器常用快捷键速查表
  • 排序算法——基数排序
  • 函数级重构:如何写出高可读性的方法?
  • 生产型机器学习系统:静态训练与动态训练的权衡与实践