当前位置:首页 > React

react实现页面全屏展示

2026-01-27 10:32:29React

使用 Fullscreen API 实现全屏

React 中可以通过调用浏览器原生 Fullscreen API 实现全屏功能。需要获取 DOM 元素引用并调用相应方法。

import { 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}>
      <button onClick={enterFullscreen}>进入全屏</button>
      <button onClick={exitFullscreen}>退出全屏</button>
    </div>
  );
}

使用 react-full-screen 库

第三方库 react-full-screen 提供了更简单的全屏实现方式,封装了浏览器兼容性处理。

import React, { useState } from 'react';
import { FullScreen, useFullScreenHandle } from "react-full-screen";

function App() {
  const handle = useFullScreenHandle();
  const [isFullscreen, setIsFullscreen] = useState(false);

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

      <button onClick={handle.exit}>
        退出全屏
      </button>

      <FullScreen handle={handle} onChange={setIsFullscreen}>
        <div className="fullscreen-content">
          {isFullscreen ? "全屏模式" : "非全屏模式"}
        </div>
      </FullScreen>
    </div>
  );
}

监听全屏状态变化

通过添加事件监听器可以响应全屏状态变化,执行相应逻辑。

useEffect(() => {
  const handleFullscreenChange = () => {
    console.log('全屏状态变化:', document.fullscreenElement !== null);
  };

  document.addEventListener('fullscreenchange', handleFullscreenChange);
  document.addEventListener('webkitfullscreenchange', handleFullscreenChange); // Safari
  document.addEventListener('msfullscreenchange', handleFullscreenChange); // IE

  return () => {
    document.removeEventListener('fullscreenchange', handleFullscreenChange);
    document.removeEventListener('webkitfullscreenchange', handleFullscreenChange);
    document.removeEventListener('msfullscreenchange', handleFullscreenChange);
  };
}, []);

样式调整注意事项

全屏模式下某些样式可能需要特殊处理,确保内容正确显示。

/* 全屏元素样式 */
.fullscreen-content {
  width: 100%;
  height: 100%;
  background-color: white;
}

/* 隐藏浏览器默认全屏提示 */
:-webkit-full-screen {
  background-color: white;
}
:-moz-full-screen {
  background-color: white;
}
:-ms-fullscreen {
  background-color: white;
}
:fullscreen {
  background-color: white;
}

移动端兼容性考虑

移动设备上的全屏行为可能有所不同,需要额外测试和处理。

react实现页面全屏展示

const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);

if (isMobile) {
  // 移动端特定处理
  document.documentElement.requestFullscreen();
}

标签: 全屏页面
分享给朋友:

相关文章

php实现页面跳转

php实现页面跳转

PHP 页面跳转方法 在 PHP 中,可以通过多种方式实现页面跳转,以下是几种常见的方法: 使用 header() 函数 header() 函数是 PHP 中最常用的跳转方法,通过发送 HTTP 头…

vue实现转页面

vue实现转页面

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转可以通过多种方式,主要分为编程式导航和声明式导航两种。以下是具体实现方法: 使用 <router-link> 声明式导航 <r…

vue页面实现流程

vue页面实现流程

Vue 页面实现流程 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI 适用于传统项目,Vite 适合现代轻量级应用。 安装依赖后,通过命令行工具运行项目初始化命令,…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

vue实现页面tab

vue实现页面tab

Vue 实现页面 Tab 的方法 使用动态组件 <component :is> 通过 Vue 的动态组件功能,结合 v-for 和 v-if 可以快速实现 Tab 切换效果。 <t…

vue单页面实现

vue单页面实现

Vue 单页面应用(SPA)实现指南 Vue.js 是一个流行的前端框架,适合构建单页面应用(SPA)。以下是实现 Vue SPA 的关键步骤和技术要点。 项目初始化 使用 Vue CLI 快速搭建…