当前位置:   article > 正文

Vue 数据大屏适配_vue实现大屏显示分辨率2560*856横截

vue实现大屏显示分辨率2560*856横截

1、准备俩个盒子

.dataScreen-content 盒子内容根据设计稿给的px单位进行正常的布局就行

2、盒子的CSS样式

  1. .dataScreen-container {
  2. width: 100%;
  3. height: 100%;
  4. // 有背景图需要的样式
  5. background: url("./images/bg.png") no-repeat;
  6. background-repeat: no-repeat;
  7. background-attachment: fixed;
  8. background-position: center;
  9. background-size: 100% 100%;
  10. background-size: cover;
  11. .dataScreen-content {
  12. position: fixed;
  13. top: 50%;
  14. left: 50%;
  15. z-index: 999;
  16. display: flex;
  17. flex-direction: column;
  18. overflow: hidden;
  19. transition: all 0.3s;
  20. transform-origin: left top;
  21. }
  22. }

3、监听屏幕大小针对元素进行缩放,并始终保持居中时。

这里假设设计稿的比例是:1920px / 1080px

  1. const dataScreenRef = ref<HTMLElement | null>(null);
  2. onMounted(() => {
  3. if (dataScreenRef.value) {
  4. dataScreenRef.value.style.transform = `scale(${getScale()}) translate(-50%, -50%)`;
  5. dataScreenRef.value.style.width = `1920px`;
  6. dataScreenRef.value.style.height = `1080px`;
  7. }
  8. // 添加窗口大小变化监听器
  9. window.addEventListener("resize", resize);
  10. });
  11. // 设置响应式
  12. const resize = () => {
  13. if (dataScreenRef.value) {
  14. dataScreenRef.value.style.transform = `scale(${getScale()}) translate(-50%, -50%)`;
  15. }
  16. };
  17. // 根据浏览器大小推断缩放比例
  18. const getScale = (width = 1920, height = 1080) => {
  19. let ww = window.innerWidth / width;
  20. let wh = window.innerHeight / height;
  21. return ww < wh ? ww : wh;
  22. };
  23. // 退出页面时移除
  24. onBeforeUnmount(() => {
  25. window.removeEventListener("resize", resize);
  26. });

3.1、添加窗口大小变化监听器

3.2、根据窗口的宽度和高度给定的基准宽度和高度(默认为 1920x1080)计算缩放比例,并返回较小的比例值,以确保元素在水平和垂直方向上都不会超出视口

3.3、返回较小的缩放比例的目的是为了保证元素在视口完整显示,不会因为在某一维度上缩放过大而导致元素在另一维度上超出视口。如果返回较大的缩放比例,那么元素可能会在某一维度上超出视口,这在很多情况下是不希望发生的。

4、效果图如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/798527
推荐阅读
相关标签
  

闽ICP备14008679号