html 全屏API使用
全屏API的落地:让网页像原生应用那样接管屏幕
在手机浏览器里,把页面撑满整屏并获得必要的系统权限,是提升沉浸感的常见需求。全屏API提供了一套轻量但有效的手段,能让你的网页像应用那样接管屏幕,包括隐藏地址栏、提供系统级的焦点与键盘事件、启用硬件加速。以下是围绕关键步骤与常见疑问的实操指南。
为什么要用全屏API
当用户在移动端点开你的链接,期望看到的不是被浏览器边栏分割的页面,而是一气呵成的视觉体验。全屏API能减少信息打断,让交互更贴近本地应用,尤其在小游戏、直播、音视频或创意展示等场景中价值显著。
关键概念与安全边界
- 文档全屏(document.fullscreen):将当前文档区域拉到全屏。
- 系统全屏(Fullscreen API 的系统级权限):在部分系统上,需要用户的明确授权才能获得更高权限,如隐藏地址栏或在后台保持活动。
- 退出全屏:使用
document.exitFullscreen()或fullscreenElement检查是否处于全屏。
入口:请求全屏
从用户点击的那一刻开始,你可以发起全屏请求:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>全屏体验</title>
</head>
<body>
<div id="fullscreen-element" style="width:100vw;height:100vh;background:red;"></div>
<script>
const elem = document.getElementById('fullscreen-element');
if (elem.requestFullscreen) {
elem.requestFullscreen();
}
</script>
</body>
</html>
在移动端,直接请求全屏可能不会立即获得隐藏地址栏的权限,需要在用户明确操作(如点击按钮)触发。
沉浸式交互:焦点与事件
进入全屏后,页面将获得更高的交互优先级。你可以监听并使用fullscreenchange、keydown等事件来做出响应,让页面像应用一样可操作。
<script>
document.addEventListener('fullscreenchange', () => {
if (document.fullscreenElement) {
console.log('已进入全屏');
}
});
document.addEventListener('keydown', (e) => {
if (document.fullscreenElement) {
console.log('按下了', e.key);
// 这里可以处理键盘指令
}
});
</script>
高级用法:系统全屏权限
在部分平台(如Android的某些版本),系统全屏权限会更严格,需要用户授权。常见做法是通过点击授权弹窗中的“允许”来获取更高权限:
<div id="fullscreen-element" style="width:100vw;height:100vh;background:red;"></div>
<script>
const elem = document.getElementById('fullscreen-element');
elem.addEventListener('webkitfullscreenallowed', () => {
// 已获得系统级权限
console.log('获得系统全屏权限');
});
elem.addEventListener('webkitfullscreenerror', (e) => {
console.error('系统全屏错误:', e);
});
elem.addEventListener('fullscreenerror', (e) => {
console.error('全屏错误:', e);
});
</script>
结束与恢复
提供清晰的退出路径,是保持用户友好和可控体验的关键。通过按钮或快捷键引导退出,避免在用户未预期时关闭页面。
<button onclick="document.exitFullscreen()">退出全屏</button>
常见问题与注意
- 移动端地址栏:多数情况下需要用户明确操作(如点击按钮)才能隐藏地址栏,部分系统仅在特定页面(如视频)才允许。
- 后台运行:全屏并不等同于后台运行。在系统限制下,可能无法在后台持续播放或处理。
- 兼容性:不同浏览器和平台的权限与API差异较大,建议在关键步骤加入错误处理与兼容性判断。
- 性能:全屏后尽量减少重绘与回流,避免性能抖动。
结语
掌握全屏API,不只是让页面“占满屏幕”,更是为不同场景设计合适的沉浸式交互路径。通过合理请求权限、处理事件与退出,你可以用网页的方式,提供接近原生应用的体验,让内容更顺畅地与用户对话。
文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。


还没有评论,来说两句吧...