gpt4 book ai didi

css - 我的位置 : sticky element isn't sticky when using flexbox

转载 作者:数据小太阳 更新时间:2023-10-29 09:10:12 28 4
gpt4 key购买 nike

我被困在这个问题上有一段时间了,我想我会分享这个position: sticky + flexbox gotcha:

我的粘性 div 工作正常,直到我将我的 View 切换到一个 flex 盒容器,突然间当它被包裹在一个 flexbox 父容器中时,它不再是粘性的。

.flexbox-wrapper {
display: flex;
height: 600px;
}
.regular {
background-color: blue;
}
.sticky {
position: -webkit-sticky;
position: sticky;
top: 0;
background-color: red;
}
<div class="flexbox-wrapper">
<div class="regular">
This is the regular box
</div>
<div class="sticky">
This is the sticky box
</div>
</div>

JSFiddle showing the problem

最佳答案

由于 flex box 元素默认为 stretch,因此所有元素的高度都相同,无法滚动。

向粘性元素添加 align-self: flex-start 将高度设置为自动,允许滚动,并修复它。

目前这是supported在所有主流浏览器中,但 Safari 仍然在 -webkit- 前缀之后,除 Firefox 之外的其他浏览器在 position: sticky 表方面存在一些问题。

.flexbox-wrapper {
display: flex;
overflow: auto;
height: 200px; /* Not necessary -- for example only */
}
.regular {
background-color: blue; /* Not necessary -- for example only */
height: 600px; /* Not necessary -- for example only */
}
.sticky {
position: -webkit-sticky; /* for Safari */
position: sticky;
top: 0;
align-self: flex-start; /* <-- this is the fix */
background-color: red; /* Not necessary -- for example only */
}
<div class="flexbox-wrapper">
<div class="regular">
This is the regular box
</div>
<div class="sticky">
This is the sticky box
</div>
</div>

JSFiddle showing the solution

关于css - 我的位置 : sticky element isn't sticky when using flexbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44446671/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com