ma question est assez simple. Je travaille sur une page de la version mobile et nous voulons garder le bouton jaune "accrocher" fixé en bas, mais la position fixe ne fonctionne pas, elle fonctionne comme une position absolue et je ne sais pas pourquoi.
La page que je travaille: https://www.thechivery.com/products/everything-is-j-ok-tee
Merci, Luiz
Le problème ici réside dans votre classe wrapper .content-container
, qui a une déclaration CSS de webkit-transform: translate3d(0,0,0)
. La déclaration de transformation, telle que cette réponse illustre , modifie le contexte de positionnement de la fenêtre d'affichage en élément pivoté, ce qui signifie essentiellement que votre élément fixed
se comporte comme s'il était absolument positionné. Voici un exemple montrant la différence entre un élément fixe dans une div
transformée et un élément fixe en dehors de cette div
.
.rotate {
transform: rotate(30deg);
background: blue;
width: 300px;
height: 300px;
margin: 0 auto;
}
.fixed {
position: fixed;
background: red;
padding: 10px;
color: white;
top: 50px;
}
<div class="rotate">
<div class="fixed"> I am fixed inside a rotated div.</div>
</div>
<div class="fixed"> I am fixed outside a rotated div.</div>
Pour que tout fonctionne, vous devez supprimer la déclaration transform3d
de .content-container
.
Pour ceux qui se demandent s'il s'agit d'un bug de navigateur. Apparemment, ce n'est pas le cas et cela suit les spécifications actuelles du W3C. Ce qui est étrange, au début, c’est qu’il s’agissait simplement d’une incohérence entre les navigateurs (dans certains cas, cela fonctionnait comme prévu), puis tous ont commencé à suivre les règles intuitives du W3C. Il ne semble pas y avoir d’explication claire quant à la logique voulue, à l’effet secondaire d’un problème de mise en œuvre ou à une simple omission.
De plus, position: fixed
est cassé non seulement par transform
mais également par les propriétés filter
et perspective
mises sur n'importe quel ancêtre, comme expliqué here .
Voir: https://www.w3.org/TR/css-transforms-1/#propdef-transform et https://www.w3.org/Bugs/Public/show_bug cgi? id = 16328 et https://github.com/w3c/csswg-drafts/issues/913 pour plus d'informations sur ce sujet.
Dans mon cas, le problème a été causé par le mélange d'une css transform
avec overflow: auto;
sur le parent.
J'ai créé un nouvel élément enfant sur lequel j'ai déplacé la propriété overflow
.
La séparation des deux propriétés a résolu le problème.