必须用 position: fixed。因为 fixed 不依赖文档流和滚动容器,始终相对于视口定位、真正底部悬浮;sticky 则依赖父容器可滚动且内容足够长,否则失效,无法保证始终贴底。

底部固定悬浮条的定位方式选 position: fixed 还是 position: sticky
必须用 position: fixed。虽然 position: sticky 看起来也“粘”在底部,但它依赖父容器滚动流,一旦页面内容不够长或父元素有 overflow 限制,就完全失效;而 fixed 不依赖文档流,能真正脱离页面滚动、始终贴底。注意:不要给父容器设 transform、perspective 或 filter,否则会创建新的层叠上下文,导致 fixed 相对于该父级定位而非视口。
双按钮布局用 flex 还是 grid 更稳妥
flex 是首选,兼容性好、行为可预测。关键点在于容器要设 justify-content: space-between(左右撑开),同时加 padding 避免按钮紧贴屏幕边缘。别用 float 或绝对定位模拟,容易在不同分辨率下错位。
<div class="bottom-bar"> <button class="btn-left">返回</button> <button class="btn-right">提交</button> </div>
.bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; justify-content: space-between; padding: 0 16px; background: #fff; border-top: 1px solid #eee; }
按钮点击区域太小、误触多怎么改
移动端默认点击热区只有按钮文字大小,必须显式扩大可点击范围。不要只调 font-size,而是用 padding + min-height 保证最小高度 48px(iOS/Android 推荐值),再用 box-sizing: border-box 防止尺寸溢出。另外,加 touch-action: manipulation 可减少 iOS 上的 300ms 延迟。
-
padding: 12px 20px(上下留白够,左右防挤) min-height: 48pxbox-sizing: border-boxtouch-action: manipulation
遮挡内容或被键盘顶起怎么办
iOS Safari 键盘弹出会把 fixed 元素顶到视口上方,这不是 bug,是浏览器为避免遮挡输入框做的主动调整。临时解法是监听 focusin 和 blur 事件,在输入框聚焦时把 bottom-bar 设为 display: none,失焦再恢复。更稳的做法是用 viewport-fit=cover + env(safe-area-inset-bottom) 适配刘海屏和键盘空间,但需配合 JS 检测键盘状态——这点常被忽略,纯 CSS 无法可靠应对键盘弹出。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











