赞
踩
.dataScreen-content 盒子内容根据设计稿给的px单位进行正常的布局就行
- .dataScreen-container {
- width: 100%;
- height: 100%;
- // 有背景图需要的样式
- background: url("./images/bg.png") no-repeat;
- background-repeat: no-repeat;
- background-attachment: fixed;
- background-position: center;
- background-size: 100% 100%;
- background-size: cover;
- .dataScreen-content {
- position: fixed;
- top: 50%;
- left: 50%;
- z-index: 999;
- display: flex;
- flex-direction: column;
- overflow: hidden;
- transition: all 0.3s;
- transform-origin: left top;
- }
- }
这里假设设计稿的比例是:1920px / 1080px;
- const dataScreenRef = ref<HTMLElement | null>(null);
-
- onMounted(() => {
- if (dataScreenRef.value) {
- dataScreenRef.value.style.transform = `scale(${getScale()}) translate(-50%, -50%)`;
- dataScreenRef.value.style.width = `1920px`;
- dataScreenRef.value.style.height = `1080px`;
- }
- // 添加窗口大小变化监听器
- window.addEventListener("resize", resize);
- });
-
- // 设置响应式
- const resize = () => {
- if (dataScreenRef.value) {
- dataScreenRef.value.style.transform = `scale(${getScale()}) translate(-50%, -50%)`;
- }
- };
-
- // 根据浏览器大小推断缩放比例
- const getScale = (width = 1920, height = 1080) => {
- let ww = window.innerWidth / width;
- let wh = window.innerHeight / height;
- return ww < wh ? ww : wh;
- };
-
- // 退出页面时移除
- onBeforeUnmount(() => {
- window.removeEventListener("resize", resize);
- });
3.1、添加窗口大小变化监听器
3.2、根据窗口的宽度和高度与给定的基准宽度和高度(默认为 1920x1080)计算缩放比例,并返回较小的比例值,以确保元素在水平和垂直方向上都不会超出视口。
3.3、返回较小的缩放比例的目的是为了保证元素在视口中完整显示,不会因为在某一维度上缩放过大而导致元素在另一维度上超出视口。如果返回较大的缩放比例,那么元素可能会在某一维度上超出视口,这在很多情况下是不希望发生的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。