Nouveau titre : Mon point est le suivant : les propriétés collantes des éléments collants ne sont pas préservées lors de l'utilisation de flexbox
P粉356128676
2023-08-21 23:28:29
<p>J'étais bloqué sur ce problème pendant un moment et je voulais partager cette <code>position : sticky</code> + flexbox issue :</p>
<p>Mon div collant, après être passé à la vue conteneur flexbox, n'est soudainement plus collant lorsqu'il est enveloppé dans un élément parent flexbox. </p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">.flexbox-wrapper {
affichage : flexible ;
hauteur : 600 px ;
}
.régulier {
couleur de fond : bleu ;
}
.collant {
position : -webkit-sticky ;
position : collante ;
haut : 0 ;
couleur de fond : rouge ;
}</pré>
<pre class="brush:html;toolbar:false;"><div class="flexbox-wrapper">
<div class="regular">
C'est une boîte ordinaire
</div>
<div class="sticky">
C'est une boîte collante
</div>
</div></pre>
<p><br /></p>
<p>Problème d'affichage JSFiddle</p>
Dans mon cas, un conteneur parent appliquait la fonctionnalité de
overflow-x: hidden;
这个样式,这会破坏position: sticky
. Vous devez supprimer cette règle.Aucun élément parent ne doit être soumis aux règles CSS ci-dessus. Cette condition s'applique à tous les éléments parents jusqu'à (mais non compris) l'élément 'body'.
Étant donné que l'élément flexbox est par défaut
stretch
, tous les éléments ont la même hauteur et ne peuvent pas défiler.Ajoutez
align-self: flex-start
à l'élément collant, réglez la hauteur sur automatique, permettant ainsi le défilement et la fixation.Actuellement, cela est pris en charge dans tous les principaux navigateurs, mais Safari a encore quelques problèmes avec l'utilisation des tables de
-webkit-
前缀,而除了Firefox之外的其他浏览器在使用position: sticky
.