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

前端大屏可视化项目 局部全屏(指定盒子全屏)

需求是这样的,我用的项目是vue admin 项目  现在需要在做大屏项目
不希望显示除了大屏的其他东西 于是想了这个办法  
至于大屏适配问题 请看我文章   底部的代码直接复制就可以运行 vue2 
px转rem 大屏适配方案 postcss-pxtorem-CSDN博客

 

<template>
  <div class="container">
    <!-- 粉色盒子 -->
    <div class="pink-box" ref="pinkBox">
      <div class="box-content">点击全屏</div>
      <button class="fullscreen-btn" @click="toggleFullscreen('pinkBox')">
        {{ isPinkFullscreen ? '退出全屏' : '全屏展示' }}
      </button>
    </div>

    <!-- 天蓝色盒子 -->
    <div class="skyblue-box" ref="skyblueBox">
      <div class="box-content">点击全屏</div>
      <button class="fullscreen-btn" @click="toggleFullscreen('skyblueBox')">
        {{ isSkyblueFullscreen ? '退出全屏' : '全屏展示' }}
      </button>
    </div>
  </div>
</template>

<script>
export default {
  components: {},

  data () {
    return {
      isPinkFullscreen: false,
      isSkyblueFullscreen: false
    }
  },

  computed: {},

  watch: {},

  created () {},

  mounted () {
    // 监听全屏状态变化
    document.addEventListener('fullscreenchange', this.handleFullscreenChange)
  },

  beforeDestroy () {
    // 移除事件监听器
    document.removeEventListener('fullscreenchange', this.handleFullscreenChange)
  },

  methods: {
    // 切换全屏状态
    toggleFullscreen (boxRef) {
      const element = this.$refs[boxRef]

      if (!document.fullscreenElement) {
        // 进入全屏
        element.requestFullscreen()
        if (boxRef === 'pinkBox') this.isPinkFullscreen = true
        else if (boxRef === 'skyblueBox') this.isSkyblueFullscreen = true
      } else {
        // 退出全屏
        if (document.exitFullscreen) document.exitFullscreen()
      }
    },

    // 处理全屏状态变化
    handleFullscreenChange () {
      if (!document.fullscreenElement) {
        this.isPinkFullscreen = false
        this.isSkyblueFullscreen = false
      }
    }
  }
}
</script>

<style lang="scss" scoped>
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  padding: 20px;
  height: 90vh;
  background: plum;
}

.pink-box,
.skyblue-box {
  position: relative;
  width: 100%;
  height: 300px;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 8px;
}

.pink-box {
  background-color: pink;
  border: 1px solid #ff9999;
}

.skyblue-box {
  background-color: skyblue;
  border: 1px solid #66b3ff;
}

.box-content {
  font-size: 20px;
  color: white;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
}

.fullscreen-btn {
  position: absolute;
  right: 10px;
  bottom: 10px;
  padding: 5px 10px;
  background-color: rgba(255, 255, 255, 0.8);
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

:fullscreen .pink-box,
:fullscreen .skyblue-box {
  width: 100vw;
  height: 100vh;
  border-radius: 0;
}
</style>

相关文章:

  • 《算法笔记》3.5小节——入门模拟->进制转换
  • Halo 设置 GitHub - OAuth2 认证指南
  • 【模拟电路】达林顿管
  • Linux--进程信号
  • windows安装docker随记
  • 【Git】--- 企业级开发流程
  • MacOS下下载和编译webrtc步骤
  • AI Agent入门指南
  • 使用Golang打包jar应用
  • CAS是什么,以及它在内存分配中的作用?线程在分配内存时为什么会发生竞争?预分配堆内存区域是如何解决这个问题的?
  • python求π近似值
  • 【速写】formatting_func与target_modules的细节(peft)
  • K8s是常用命令和解释
  • 【Hotspot虚拟机创建对象的过程是什么样的?】
  • Redis的分布式锁
  • [ABC400F] Happy Birthday! 3 题解
  • Web渗透之XSS注入
  • LeetCode 255 超通俗讲解:Swift 验证前序是否 BST
  • 【经济保护主义叙事】
  • QQ风格客服聊天窗口
  • wordpress做网站好吗/seo排名优化公司哪家好
  • wordpress常用函数大全/长沙百度网站优化
  • 做网站最主要是那个一类商标/百度指数网页版
  • 网络优化工程师是做什么的/长沙关键词优化新报价
  • 找人做网站被骗/seo顾问是什么
  • wordpress做社交网站吗/网站推广怎么优化