当前位置:首页 > React

react全屏实现

2026-01-26 11:17:22React

使用浏览器全屏API实现

React中可以通过调用浏览器的全屏API实现全屏功能。需要获取DOM元素引用,调用requestFullscreen方法。

import { useRef } from 'react';

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

  const handleFullScreen = () => {
    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();
      }
    }
  };

  return (
    <div ref={elementRef}>
      <button onClick={handleFullScreen}>进入全屏</button>
    </div>
  );
}

使用第三方库react-full-screen

安装react-full-screen库可以简化全屏实现:

npm install react-full-screen

使用示例:

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

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

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

      {handle.active ? (
        <div className="full-screenable-node" style={{ background: 'black' }}>
          全屏内容
          <button onClick={handle.exit}>退出</button>
        </div>
      ) : (
        <div>普通模式内容</div>
      )}
    </div>
  );
}

全屏状态监听

可以通过事件监听全屏状态变化:

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

  document.addEventListener('fullscreenchange', handleChange);

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

样式注意事项

全屏模式下CSS需要特殊处理:

:-webkit-full-screen {
  background-color: yellow;
}

:-moz-full-screen {
  background-color: yellow;
}

:-ms-fullscreen {
  background-color: yellow;
}

:fullscreen {
  background-color: yellow;
}

移动端兼容处理

移动设备可能需要添加元标签:

react全屏实现

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

某些移动浏览器需要手势触发全屏,不能直接通过代码调用。

标签: 全屏react
分享给朋友:

相关文章

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

如何恢复react

如何恢复react

恢复 React 项目的方法 检查并修复依赖项 运行 npm install 或 yarn install 重新安装所有依赖项。如果依赖项损坏或缺失,这将恢复项目所需的库和工具。 恢复删除的文件 如…

react如何代码优化

react如何代码优化

减少不必要的重新渲染 使用 React.memo 包装函数组件以避免在 props 未变化时重新渲染。对于类组件,可以通过 shouldComponentUpdate 或继承 PureComponen…

react如何切换class

react如何切换class

动态切换 React 组件的类名 在 React 中动态切换类名可以通过多种方式实现,以下是常见的几种方法: 使用模板字符串和状态管理 function MyComponent() {…

如何外部访问react

如何外部访问react

外部访问 React 应用的方法 配置代理服务器 在开发环境中,可以通过配置代理服务器解决跨域问题。修改 package.json 文件,添加 proxy 字段指向后端 API 地址: "proxy…