当前位置:首页 > 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 提供了更简单的全屏实现方式,封装了浏览器兼容性处理。

react实现页面全屏展示

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>
  );
}

监听全屏状态变化

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

react实现页面全屏展示

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;
}

移动端兼容性考虑

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

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

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

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

相关文章

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,可以快速实现分页功能。需要先安装Element UI库。 <t…

js实现页面跳转

js实现页面跳转

使用 window.location.href 通过修改 window.location.href 实现页面跳转,直接赋值目标 URL 即可。 window.location.href = 'h…

css如何制作页面模糊

css如何制作页面模糊

使用 backdrop-filter 属性 通过 backdrop-filter 属性可以直接为元素背后的区域添加模糊效果。该属性需要浏览器支持(如 Chrome、Edge、Safari)。示例代码:…

vue实现页面跳转

vue实现页面跳转

vue实现页面跳转的方法 在Vue中实现页面跳转主要有以下几种方式: 使用router-link组件 router-link是Vue Router提供的组件,用于声明式导航: <rout…

vue实现页面分模块

vue实现页面分模块

Vue 实现页面分模块的方法 在 Vue 中实现页面分模块可以通过组件化、路由分割、动态加载等方式实现,以下是具体方法: 组件化拆分 将页面拆分为多个功能独立的组件,每个组件负责特定功能模块。通过…

vue单页面实现登录

vue单页面实现登录

实现登录功能的基本步骤 在Vue单页面应用(SPA)中实现登录功能,通常需要结合前端和后端交互。以下是关键步骤和代码示例: 创建登录组件 开发一个独立的登录组件,包含表单元素如用户名和密码输入框,…