上一篇
设置HTML全屏可通过CSS或JavaScript实现,CSS方法:设置
html, body { height:100%; width:100%; margin:0; },JavaScript方法:使用
document.documentElement.requestFullscreen()触发全屏API,需注意浏览器兼容性。
使用 HTML5 Fullscreen API(推荐)
通过 JavaScript 动态控制全屏,兼容现代浏览器:
<button id="fullscreen-btn">进入全屏</button>
<script>
const btn = document.getElementById('fullscreen-btn');
btn.addEventListener('click', () => {
const element = document.documentElement; // 整个页面
if (element.requestFullscreen) {
element.requestFullscreen(); // 标准语法
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen(); // Safari/Chrome旧版
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen(); // IE/Edge
}
});
// 监听退出全屏事件
document.addEventListener('fullscreenchange', () => {
if (!document.fullscreenElement) {
console.log("已退出全屏");
}
});
</script>
关键点:
- 通过
requestFullscreen()触发全屏 - 监听
fullscreenchange事件处理退出逻辑 - 支持特定元素全屏(如
document.getElementById('myVideo').requestFullscreen())
CSS 模拟全屏(静态布局)
适合固定全屏区块(如登陆页背景):

.fullscreen-section {
position: fixed; /* 脱离文档流 */
top: 0;
left: 0;
width: 100vw; /* 视口宽度 */
height: 100vh; /* 视口高度 */
background: #2c3e50;
z-index: 1000; /* 确保顶层显示 */
}
<div class="fullscreen-section"> <!-- 全屏内容 --> </div>
视频全屏(<video> 标签属性)
视频元素专用属性:
<video controls autoplay playsinline webkit-playsinline>
<source src="video.mp4" type="video/mp4">
<!-- 添加全屏按钮 -->
<button onclick="this.parentElement.requestFullscreen()">
全屏播放
</button>
</video>
注意: 部分移动端浏览器需添加 playsinline 属性防止自动全屏。
浏览器兼容性处理
| 浏览器 | 方法 | 退出全屏事件 |
|---|---|---|
| Chrome/Firefox | requestFullscreen |
fullscreenchange |
| Safari | webkitRequestFullscreen |
webkitfullscreenchange |
| IE11/Edge | msRequestFullscreen |
MSFullscreenChange |
兼容代码示例:

// 统一化全屏请求
function openFullscreen(element) {
const methods = [
'requestFullscreen',
'webkitRequestFullscreen',
'msRequestFullscreen'
];
for (const method of methods) {
if (element[method]) {
element[method]();
break;
}
}
}
// 统一化退出全屏
function exitFullscreen() {
const methods = [
'exitFullscreen',
'webkitExitFullscreen',
'msExitFullscreen'
];
for (const method of methods) {
if (document[method]) {
document[method]();
break;
}
}
}
安全与用户体验规范
- 用户触发原则:全屏必须由点击/触摸等手势触发(如按钮事件),禁止页面加载自动全屏
- 键盘锁定:全屏时按
ESC自动退出,不可禁用 - 移动端限制:iOS Safari 要求全屏元素必须包含在用户触发的调用栈中
- 权限提示:首次全屏时浏览器会显示权限提示,无法绕过
常见问题解决
-
全屏后元素错位?
检查 CSS 是否使用 或vw/vh单位,避免固定尺寸。 -
移动端无法全屏?
添加元标签禁止缩放:<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
-
全屏时背景变黑?
确保目标元素的背景色或内容已正确设置。
最佳实践建议
- 优先使用 Fullscreen API:动态控制更灵活
- 提供显式退出按钮:尤其针对不会按
ESC的用户 - 响应式设计:结合媒体查询适配不同设备
- 兼容性检测:使用
if (document.fullscreenEnabled)提前判断支持性
引用说明:
本文技术要点参考 MDN Web Docs 的 Fullscreen API 指南 及 W3C 全屏规范,浏览器兼容性数据基于 Can I Use 2025年10月统计。
