Neuer Titel: Mein Punkt ist: Die Sticky-Eigenschaften von Sticky-Elementen bleiben bei Verwendung von Flexbox nicht erhalten
P粉356128676
2023-08-21 23:28:29
<p>Ich blieb eine Weile bei diesem Problem hängen und wollte dieses <code>position: sticky</code> Problem mit der Flexbox teilen:</p>
<p>Mein Sticky-Div ist nach dem Wechsel zur Flexbox-Containeransicht plötzlich nicht mehr Sticky, wenn es in ein übergeordnetes Flexbox-Element eingeschlossen ist. </p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">.flexbox-wrapper {
Anzeige: Flex;
Höhe: 600px;
}
.regulär {
Hintergrundfarbe: blau;
}
.klebrig {
Position: -webkit-sticky;
Position: klebrig;
oben: 0;
Hintergrundfarbe: rot;
}</pre>
<pre class="brush:html;toolbar:false;"><div class="flexbox-wrapper">
<div class="regular">
Dies ist eine gewöhnliche Box
</div>
<div class="sticky">
Das ist eine Klebebox
</div>
</div></pre>
<p><br /></p>
<p>JSFiddle-Anzeigeproblem</p>
在我的情况下,一个父容器应用了
overflow-x: hidden;
这个样式,这会破坏position: sticky
的功能。你需要移除这个规则。没有任何父元素应该应用上述的CSS规则。这个条件适用于所有父元素,直到(但不包括)'body'元素。
由于弹性盒子元素默认为
stretch
,所有元素的高度都相同,无法进行滚动。将
align-self: flex-start
添加到粘性元素中,将高度设置为自动,从而实现了滚动并固定。目前,这在所有主要浏览器中都得到了支持,但Safari仍需要使用
-webkit-
前缀,而除了Firefox之外的其他浏览器在使用position: sticky
的表格时存在一些问题。