数据大屏的解决方案

1. 使用缩放比例适配各种设备(适用16*9比例的屏幕分辨率)

1.封装一个获取缩放比例的工具函数

/**
 * 大屏效果需要满足16:9的屏幕比例,才能达到完美的大屏适配效果
 * 其他比例的大屏效果,不能铺满整个屏幕
 * @param {*} w 设备宽度 默认 1920 
 * @param {*} h 设备高度 默认 1080
 * @returns 返回值是缩放比例
 */
export function getScale(w = 1920, h = 1080) {
  const ww = window.innerWidth / w
  const wh = window.innerHeight / h
  return ww < wh ? ww : wh
}

2.在vue中使用方案如下

<template>
  <div class="full-screen-container">
    <div id="screen">
       大屏展示的内容
    </div>
  </div>
</template>
<script>
import { getScale } from "@/utils/tool";
import screenfull from "screenfull";
export default {
  name: "cockpit",
  mounted() {
    if (screenfull && screenfull.enabled && !screenfull.isFullscreen) {
      screenfull.request();
    }
    this.setFullScreen();
  },
  methods: {
    setFullScreen() {
      const screenNode = document.getElementById("screen");
      // 非标准设备(笔记本小于1920,如:1366*768、mac 1432*896)
      if (window.innerWidth < 1920) {
        screenNode.style.left = "50%";
        screenNode.style.transform = `scale(${getScale()}) translate(-50%, 0)`;
      } else if (window.innerWidth === 1920) {
        // 标准设备 1920 * 1080
        screenNode.style.left = 0;
        screenNode.style.transform = `scale(1) translate(0, 0)`;
      } else {
        // 大屏设备(4K 2560*1600)
        screenNode.style.left = "50%";
        screenNode.style.transform = `scale(${getScale()}) translate(-50%, 0)`;
      }
      // 监听视口变化
      window.addEventListener("resize", () => {
        if (window.innerWidth === 1920) {
          screenNode.style.left = 0;
          screenNode.style.transform = `scale(1) translate(0, 0)`;
        } else {
          screenNode.style.left = "50%";
          screenNode.style.transform = `scale(${getScale()}) translate(-50%, 0)`;
        }
      });
    },
  },
};
</script>
<style lang="scss">
.full-screen-container {
  width: 100vw;
  height: 100vh;
  display: flex;
  flex-direction: column;
  background-color: #131a2b;
  #screen {
    position: fixed;
    width: 1920px;
    height: 1080px;
    top: 0;
    transform-origin: left top;
    color: #fff;
  }
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值