在使用 iPhone 浏览网页或操作某些 App 时,你是否遇到过键盘弹出后下方留有一块空白区域的问题?这不仅影响美观,还可能导致内容被遮挡或布局错乱。本文将深入解析原因并提供实用解决方案。
当用户在 iPhone 的 Safari 或 WebView 中聚焦输入框(如 <input> 或 <textarea>)时,虚拟键盘会弹出。但在部分机型(尤其是带“刘海”或“灵动岛”的 iPhone)上,页面底部可能出现一段无法利用的空白区域,即使页面内容已滚动到底部。
safe-area-inset-bottom),导致布局计算错误。在 HTML 的 <head> 中添加 viewport-fit=cover:
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
通过 env(safe-area-inset-bottom) 动态调整底部间距:
.input-container {
padding-bottom: env(safe-area-inset-bottom);
}
这样可确保内容不会被 Home Indicator 遮挡,同时避免多余空白。
虽然 iOS 不提供标准键盘事件,但可通过监听窗口尺寸变化间接判断:
window.addEventListener('resize', () => {
if (window.innerHeight < document.documentElement.clientHeight * 0.7) {
// 可能键盘已弹出,可执行滚动或布局调整
console.log('键盘可能已弹出');
}
});
注意:此方法不精确,仅作辅助参考。
viewport-fit=cover。padding-bottom: env(safe-area-inset-bottom)。100vh 高度,改用 100dvh(动态视口高度)或 JavaScript 计算实际可用高度。iPhone 键盘下方空白问题源于 iOS 对安全区域的严格管理。通过合理使用 viewport 设置与 CSS 环境变量,开发者可以有效规避此问题,提升移动端用户体验。