Sticky Elements und Flexbox: Ein Gotcha
Bestimmte CSS-Konfigurationen können zu unerwartetem Verhalten führen. Ein solches Szenario tritt auf, wenn position:sticky mit flexbox kombiniert wird. Das Sticky-Element bleibt zunächst stagnieren, bis es eine bestimmte Bildlaufposition erreicht. Dieses Verhalten hört jedoch auf, wenn es in einem Flexbox-Container platziert wird.
Das Problem
Das Problem ergibt sich aus dem Standard-Flexbox-Verhalten. Standardmäßig werden alle Elemente in einem Flexbox-Container so gedehnt, dass sie in den verfügbaren Platz passen. Folglich verliert jedes Sticky-Element seine beabsichtigte Funktionalität, da der Flexbox-Container das Scrollen verhindert.
Die Lösung
Um dieses Problem zu beheben, fügen Sie align-self: flex-start hinzu Eigenschaft für das Sticky-Element. Dadurch wird die Höhe des Sticky-Elements auf „Automatisch“ eingestellt, sodass der Inhalt natürlich fließen und das Scrollen möglich ist.
Browserkompatibilität
Die meisten gängigen Browser unterstützen diese Lösung, jedoch Safari erfordert die Verwendung des Präfixes -webkit-:
.flexbox-wrapper { display: flex; } .sticky { position: -webkit-sticky; /* for Safari */ position: sticky; top: 0; align-self: flex-start; /* fix */ }
Während Firefox die Eigenschaft align-self: flex-start nicht unterstützt, ist dies der Fall leidet nicht unter dem gleichen Scrollproblem mit position: sticky. Darüber hinaus wird position: sticky noch nicht vollständig für Tabellen in allen Browsern unterstützt. Es empfiehlt sich, Vorsicht walten zu lassen, insbesondere wenn auf bestimmte Browseranforderungen eingegangen wird.
Das obige ist der detaillierte Inhalt vonWarum klebt mein Klebeelement nicht mehr in einem Flexbox-Behälter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!