position: fixed
fixe toujours un élément à une certaine position dans son conteneur de défilement ou dans le viewport. Peu importe comment vous faites défiler son conteneur, il restera exactement à la même position et n'affectera pas le flux des autres éléments dans le conteneur.
Sans rentrer dans les détails spécifiques, position: sticky
agit essentiellement comme position: relative
jusqu'à ce qu'un élément soit fait défiler au-delà d'un décalage spécifique, auquel cas il se transforme en position: fixed
, ce qui provoque que l'élément "colle" à sa position au lieu d'être fait défiler hors de la vue. Il se détache finalement lorsqu'il est fait défiler de nouveau vers sa position d'origine. Du moins, c'est ainsi que je le comprends en théorie.
La raison pour laquelle je veux éviter d'entrer dans les détails est que position: sticky
est tout nouveau, expérimental (comme indiqué dans le document auquel vous faites référence), et n'est pas encore finalisé. Même ce que j'ai indiqué ci-dessus pourrait bien changer dans un avenir proche. Vous ne pourrez de toute façon pas encore utiliser position: sticky
(espérons que cela changera dans l'année à venir).
Mozilla a récemment présenté son implémentation de position: sticky
ici. Cela vaut vraiment la peine d'y jeter un œil.