我的立场:粘性元素在使用 flexbox 时不粘性 [英] My position: sticky element isn't sticky when using flexbox
问题描述
我被这个问题困住了一段时间,并想我会分享这个position:sticky
+ flexbox gotcha:
我的粘性 div 工作正常,直到我将视图切换到 flex box 容器,当它被包裹在 flexbox 父级中时,div 突然变得不粘了.
.flexbox-wrapper {显示:弹性;高度:600px;}.常规的 {背景颜色:蓝色;}.sticky {位置:-webkit-sticky;位置:粘性;顶部:0;背景颜色:红色;}
<div class="regular">这是普通的盒子<div class="sticky">这是粘箱
由于弹性框元素默认为stretch
,所有元素高度相同,无法滚动.
>
在sticky元素中添加align-self:flex-start
,设置高度为auto,允许滚动,并修复.
目前,所有主要浏览器都支持,但 Safari 仍然落后于 -webkit-
前缀,以及除 Firefox 之外的其他浏览器在 position:sticky
表方面存在一些问题.
.flexbox-wrapper {显示:弹性;溢出:自动;高度:200px;/* 没有必要——仅举例 */}.常规的 {背景颜色:蓝色;/* 没有必要——仅举例 */高度:600px;/* 没有必要——仅举例 */}.sticky {位置:-webkit-sticky;/* 对于 Safari */位置:粘性;顶部:0;align-self: flex-start;/* <-- 这是修复 */背景颜色:红色;/* 没有必要——仅举例 */}
<div class="regular">这是普通的盒子<div class="sticky">这是粘箱