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

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 安装html2canvas库 npm install html2canvas --save 在Vue组件中引入并使用 import html2canvas f…

实现vue页面回退

实现vue页面回退

使用 Vue Router 的编程式导航 在 Vue 组件中调用 this.$router.go(-1) 可以实现页面回退。该方法通过操作浏览器历史记录栈实现后退功能,类似于点击浏览器的后退按钮。…

vue实现反馈页面

vue实现反馈页面

Vue 实现反馈页面的方法 表单组件设计 使用 Vue 的 v-model 实现表单数据双向绑定,创建包含输入框、下拉框和提交按钮的基础表单结构。表单字段通常包括用户姓名、联系方式、反馈类型和详细内容…

弹窗能用h5页面实现吗

弹窗能用h5页面实现吗

H5实现弹窗的方法 H5页面可以通过HTML、CSS和JavaScript实现多种弹窗效果,包括模态框、提示框、悬浮通知等。以下是常见的实现方式: 使用HTML和CSS创建基础弹窗 通过<…

vue实现页面缩略

vue实现页面缩略

Vue实现页面缩略的方法 使用CSS的transform: scale() 通过CSS的transform属性可以实现页面缩放效果。在Vue组件中,可以动态绑定样式来控制缩放比例。 <temp…