当前位置:首页 > React

react 实现页面多个全屏

2026-01-27 19:14:20React

实现多个全屏页面的方法

在React中实现多个全屏页面可以通过以下几种方式完成,具体选择取决于项目需求和浏览器兼容性要求。

使用Fullscreen API

现代浏览器提供了Fullscreen API,允许以编程方式控制全屏显示。通过监听全屏状态变化,可以在多个组件间切换全屏。

react 实现页面多个全屏

import { useEffect, useRef } from 'react';

function FullscreenComponent() {
  const elementRef = useRef(null);

  const enterFullscreen = () => {
    if (elementRef.current) {
      if (elementRef.current.requestFullscreen) {
        elementRef.current.requestFullscreen();
      } else if (elementRef.current.webkitRequestFullscreen) { /* Safari */
        elementRef.current.webkitRequestFullscreen();
      } else if (elementRef.current.msRequestFullscreen) { /* IE11 */
        elementRef.current.msRequestFullscreen();
      }
    }
  };

  const exitFullscreen = () => {
    if (document.exitFullscreen) {
      document.exitFullscreen();
    } else if (document.webkitExitFullscreen) { /* Safari */
      document.webkitExitFullscreen();
    } else if (document.msExitFullscreen) { /* IE11 */
      document.msExitFullscreen();
    }
  };

  return (
    <div ref={elementRef} style={{ height: '100vh' }}>
      <button onClick={enterFullscreen}>进入全屏</button>
      <button onClick={exitFullscreen}>退出全屏</button>
    </div>
  );
}

使用CSS全屏样式

通过CSS设置全屏样式是一种简单的方法,不需要JavaScript API。

function FullscreenPage() {
  return (
    <div style={{
      position: 'fixed',
      top: 0,
      left: 0,
      width: '100vw',
      height: '100vh',
      backgroundColor: 'white',
      zIndex: 1000
    }}>
      全屏内容
    </div>
  );
}

使用React Router管理全屏页面

结合React Router可以在路由级别管理全屏页面,每个路由对应一个全屏组件。

react 实现页面多个全屏

import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';

function App() {
  return (
    <Router>
      <Routes>
        <Route path="/page1" element={<FullscreenPage1 />} />
        <Route path="/page2" element={<FullscreenPage2 />} />
      </Routes>
    </Router>
  );
}

function FullscreenPage1() {
  return <div style={{ height: '100vh' }}>页面1内容</div>;
}

function FullscreenPage2() {
  return <div style={{ height: '100vh' }}>页面2内容</div>;
}

使用第三方库

一些第三方库如react-full-screen可以简化全屏功能的实现。

import { useFullScreenHandle } from "react-full-screen";

function FullScreenComponent() {
  const handle = useFullScreenHandle();

  return (
    <div>
      <button onClick={handle.enter}>进入全屏</button>
      <button onClick={handle.exit}>退出全屏</button>

      {handle.active ? (
        <div style={{ backgroundColor: 'red', height: '100vh' }}>
          全屏内容
        </div>
      ) : (
        <div>普通内容</div>
      )}
    </div>
  );
}

多全屏页面切换策略

在多个全屏页面间切换时,可以采用状态管理来控制当前显示的全屏页面。

import { useState } from 'react';

function MultiFullscreen() {
  const [currentPage, setCurrentPage] = useState(1);

  return (
    <div>
      {currentPage === 1 && <FullscreenPage1 />}
      {currentPage === 2 && <FullscreenPage2 />}
      <button onClick={() => setCurrentPage(1)}>显示页面1</button>
      <button onClick={() => setCurrentPage(2)}>显示页面2</button>
    </div>
  );
}

以上方法可以根据具体需求组合使用,Fullscreen API适合需要真正全屏的场景,CSS方法适合简单的全屏样式,而路由和状态管理适合复杂的多页面应用。

标签: 多个全屏
分享给朋友:

相关文章

vue实现多个图表展示

vue实现多个图表展示

使用 Vue 实现多个图表展示 安装图表库 推荐使用 ECharts 或 Chart.js,两者均支持 Vue 集成。以 ECharts 为例,安装依赖: npm install echarts…

h5实现全屏

h5实现全屏

全屏 API 的基本使用 HTML5 提供了 requestFullscreen API 来实现全屏功能。现代浏览器都支持这一特性,但不同浏览器可能需要添加前缀。 // 触发全屏 function…

vue实现全屏切换

vue实现全屏切换

实现全屏切换的基本方法 使用 Vue 实现全屏切换可以通过浏览器提供的 Fullscreen API 来实现。以下是一个完整的实现方案。 安装必要的依赖(如需要) npm install scre…

vue实现全屏截图

vue实现全屏截图

实现全屏截图的方法 在Vue中实现全屏截图,可以通过第三方库或原生API完成。以下是几种常见的方法: 使用html2canvas库 安装html2canvas库: npm install html…

vue页面实现全屏功能

vue页面实现全屏功能

实现全屏功能的方法 在Vue中实现全屏功能可以通过浏览器提供的Fullscreen API完成。以下是几种常见的实现方式: 使用原生Fullscreen API // 进入全屏 function e…

vue多个权限按钮实现

vue多个权限按钮实现

权限按钮的实现方式 在Vue中实现多个权限按钮的控制,可以通过以下几种方式: 基于v-if或v-show的权限控制 通过判断用户权限决定按钮的显示或隐藏。例如: <template>…