全屏API核心概念
全屏API是浏览器提供的标准接口,允许网页中的指定元素或者整个文档进入全屏显示模式,退出全屏后页面会恢复原有布局。该API不需要额外引入第三方库,主流现代浏览器都已经提供支持,是实现沉浸式浏览体验的基础技术之一。

核心方法与属性
全屏API主要包含以下几个常用的接口:
- requestFullscreen():挂载在元素上,调用后该元素会进入全屏模式,不同浏览器有前缀兼容写法
- exitFullscreen():挂载在document对象上,调用后退出当前全屏模式
- fullscreenElement:document的属性,返回当前处于全屏状态的元素,没有则返回null
- fullscreenEnabled:document的属性,返回当前浏览器是否支持全屏API
全屏API常见应用场景
视频与直播场景
视频播放是最典型的应用场景,用户点击全屏按钮后,视频容器占据整个屏幕,隐藏浏览器地址栏、工具栏等干扰元素,让用户更专注于视频内容。在线直播、视频会议等场景也普遍采用该方案。
网页游戏场景
网页游戏需要足够的显示空间和操作区域,进入全屏模式后可以避免页面其他元素干扰操作,同时扩大游戏画面的显示范围,提升游戏的沉浸感和操作体验。
在线文档与演示场景
在线PPT演示、文档编辑场景中,全屏模式可以隐藏无关的页面导航、侧边栏,让内容占据全部显示区域,方便用户查看完整内容或者进行演示操作。
数据可视化大屏场景
数据看板、可视化大屏页面通常需要最大化显示空间,全屏API可以让看板直接铺满整个显示器,清晰展示各类图表和数据指标,适合监控、展示类场景使用。
实现沉浸式浏览体验的完整步骤
第一步:检测浏览器支持情况
在调用全屏API之前,先检测当前浏览器是否支持该特性,避免调用报错。
// 检测全屏API支持情况
function checkFullscreenSupport() {
// 兼容不同浏览器的前缀写法
const fullscreenEnabled = document.fullscreenEnabled
|| document.webkitFullscreenEnabled
|| document.mozFullScreenEnabled
|| document.msFullscreenEnabled;
if (!fullscreenEnabled) {
console.log("当前浏览器不支持全屏API");
return false;
}
return true;
}
第二步:实现进入全屏功能
给目标元素绑定点击事件,调用对应的全屏方法,同时处理不同浏览器的前缀兼容问题。
// 让指定元素进入全屏
function enterFullscreen(element) {
if (!checkFullscreenSupport()) return;
// 兼容不同浏览器的全屏方法前缀
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// 示例:给全屏按钮绑定事件
const fullscreenBtn = document.getElementById("fullscreen-btn");
const targetElement = document.getElementById("content-container");
fullscreenBtn.addEventListener("click", () => {
enterFullscreen(targetElement);
});
第三步:实现退出全屏功能
可以通过按钮触发退出全屏,也可以监听用户的退出操作,调用对应的退出方法。
// 退出全屏模式
function exitFullscreen() {
// 兼容不同浏览器的退出全屏方法前缀
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
// 示例:给退出按钮绑定事件
const exitBtn = document.getElementById("exit-fullscreen-btn");
exitBtn.addEventListener("click", () => {
exitFullscreen();
});
第四步:监听全屏状态变化
通过监听fullscreenchange事件,可以在全屏状态切换时执行对应的逻辑,比如更新按钮文案、调整页面布局等。
// 监听全屏状态变化
document.addEventListener("fullscreenchange", handleFullscreenChange);
document.addEventListener("webkitfullscreenchange", handleFullscreenChange);
document.addEventListener("mozfullscreenchange", handleFullscreenChange);
document.addEventListener("MSFullscreenChange", handleFullscreenChange);
function handleFullscreenChange() {
const isFullscreen = document.fullscreenElement
|| document.webkitFullscreenElement
|| document.mozFullScreenElement
|| document.msFullscreenElement;
if (isFullscreen) {
console.log("已进入全屏模式");
// 可以在这里调整全屏下的页面样式
} else {
console.log("已退出全屏模式");
// 恢复非全屏下的页面样式
}
}
完整示例代码
下面是一个简单的HTML示例,包含进入全屏和退出全屏的完整功能:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>全屏API示例</title>
<style>
#content-container {
width: 800px;
height: 400px;
margin: 50px auto;
background-color: #f0f0f0;
padding: 20px;
border-radius: 8px;
}
.btn-group {
text-align: center;
margin-top: 20px;
}
button {
padding: 10px 20px;
margin: 0 10px;
cursor: pointer;
}
</style>
</head>
<body>
<div id="content-container">
<h3>全屏内容区域</h3>
<p>点击下方按钮可以进入全屏模式,体验沉浸式浏览效果。</p>
</div>
<div class="btn-group">
<button id="fullscreen-btn">进入全屏</button>
<button id="exit-fullscreen-btn">退出全屏</button>
</div>
<script>
// 检测全屏支持
function checkFullscreenSupport() {
const fullscreenEnabled = document.fullscreenEnabled
|| document.webkitFullscreenEnabled
|| document.mozFullScreenEnabled
|| document.msFullscreenEnabled;
return !!fullscreenEnabled;
}
// 进入全屏
function enterFullscreen(element) {
if (!checkFullscreenSupport()) {
alert("当前浏览器不支持全屏功能");
return;
}
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// 退出全屏
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
// 绑定事件
const fullscreenBtn = document.getElementById("fullscreen-btn");
const exitBtn = document.getElementById("exit-fullscreen-btn");
const targetElement = document.getElementById("content-container");
fullscreenBtn.addEventListener("click", () => {
enterFullscreen(targetElement);
});
exitBtn.addEventListener("click", () => {
exitFullscreen();
});
// 监听全屏状态变化
document.addEventListener("fullscreenchange", () => {
const isFullscreen = document.fullscreenElement
|| document.webkitFullscreenElement
|| document.mozFullScreenElement
|| document.msFullscreenElement;
fullscreenBtn.textContent = isFullscreen ? "当前全屏中" : "进入全屏";
});
</script>
</body>
</html>
开发注意事项
- 全屏API必须由用户主动操作触发,比如点击事件,不能通过代码自动调用,否则浏览器会拦截该操作
- 进入全屏后,部分浏览器会限制某些API的使用,比如键盘事件的部分按键默认行为可能会被修改
- 全屏模式下,页面的
window.innerWidth和window.innerHeight会变为屏幕的实际分辨率,布局适配时需要考虑到这个变化 - 移动端浏览器对全屏API的支持情况不一致,部分场景可能需要使用其他方式实现类似效果
- 退出全屏除了调用API,用户也可以通过按ESC键或者浏览器提供的退出按钮触发,需要做好对应的状态监听
Fullscreen_API浏览器全屏沉浸式体验JavaScript修改时间:2026-06-24 11:42:50