Élément fixe disparaît dans Chrome
Lors du défilement sur un site que j'ai construit, à l'aide de la propriété CSS position: fixed
fonctionne comme prévu à garder une barre de navigation en haut de la page.
En Chrome, cependant, si vous utilisez les liens dans la barre de navigation, il parfois disparaît. Généralement, l'élément sur lequel vous avez cliqué est toujours visible, mais pas toujours. Parfois, la chose entière disparaît. Le déplacement de la souris autour de apporte de la partie arrière de l'élément, et le défilement avec la molette de défilement ou les touches fléchées en un seul clic apporte l'élément arrière. Vous pouvez voir qu'il se passe (intermitently) sur http://nikeplusphp.org - vous pourriez avoir à cliquer sur un peu de navigation, les liens un peu de temps de la voir arriver.
J'ai aussi essayé de jouer avec les z-index et la visibilité/type d'affichage, mais avec pas de chance.
Je suis tombé sur cette question mais que le correctif n'a pas fonctionné pour moi. Semble être une webkit question que IE et Firefox fonctionnent tout aussi bien.
Est-ce un problème connu ou est-il un correctif pour garder les éléments fixes visibles?
Mise à jour:
Seulement des effets des éléments qui ont top: 0;
, j'ai essayé bottom: 0;
et qui fonctionne comme prévu.
- Je me demande si c'est lié à une ce problème...
- Merci pour le lien, j'ai contribué à le thread, mais vous vous demandez encore si il y a un moyen de contourner le problème.
- Drôle, j'ai exactement le contraire de problème où
top:0
affiche de l'élément, maisbottom:0
ne le fait pas. Malheureusement aucune de ces réponses fixer soit. - Juste une note de côté, votre page est en train d'essayer de charger des scripts dangereux (protocole HTTP), tandis que le protocole habituel pour votre page HTTPS. Vous devriez probablement corriger que c'est un problème de sécurité, et les principaux navigateurs (chrome) ne sont pas charger les scripts d'abord, qui peut briser votre page
- merci, cette question a été posté bien avant que j'ai basculé en HTTPS mais on dirait que quelque chose a changé. L'examinera.
Vous devez vous connecter pour publier un commentaire.
Ajouter
-webkit-transform: translateZ(0)
à laposition: fixed
élément. Cette forces de Chrome pour utiliser l'accélération matérielle en permanence de la peinture à l'élément fixe et d'éviter ce comportement bizarre.J'ai créé un Chrome bug pour cette https://bugs.chromium.org/p/chromium/issues/detail?id=288747. Veuillez star donc cette pouvez obtenir un peu d'attention.
position:relative
et ses enfants peuvent partiellement disparaître sur l'actualisation de la page. Je vous remercie et les rayons de... eh bien, la surprise de Chrome =)<nav>
. Si j'ai mis cet attribut, je peux voir le bar au-dessus de tout, mais je ne peux pas cliquer sur tout les liens et les boutons à l'intérieur si la barre n'est plus un élément HTML. Si je n'avais pas l'utilisation de ce bien et j'ai redimensionner la fenêtre jusqu'à ce que la barre de navigation de l'effondrement, il fonctionne! Mais si je l'ai ré-ouvert les fenêtres de bureau standard dimension, le bug est toujours là. Plus d'informations, visitez la question que j'avais posée here. MerciCette correctifs pour moi:
overflow:auto
était assez pour moi.J'ai eu le même problème avec google Chrome, il semble être un bug qui se produit quand il y a trop de choses à l'intérieur de la page, j'ai été en mesure de le réparer par adjonction, transformer le code de la position fixe de l'élément, (
transform: translateZ(0);-webkit-transform: translateZ(0);
) qui force le navigateur à utiliser l'accélération matérielle pour accéder à l'unité de traitement graphique (GPU) pour rendre les pixels de la mouche. Les applications Web, d'autre part, s'exécutent dans le contexte du navigateur, ce qui permet au logiciel de faire la plupart (si pas tous) de l'rendu, ce qui entraîne moins de puissance pour les transitions. Mais la Web a été rattraper, et la plupart des fournisseurs de navigateur maintenant fournir graphique de l'accélération matérielle par le biais de particulier de règles CSS.Aide -webkit-transform: translate3d(0,0,0); donnera un coup de pied le GPU en action pour le CSS transitions, les rendant plus souple (plus grand FPS).
Remarque: translate3d(0,0,0) ne fait rien en termes de ce que vous voyez. il permet de déplacer l'objet par 0px en x,y et z de l'axe. C'est seulement une technique à la force de l'accélération matérielle.
Les options ci-dessus n'ont pas de travail pour moi jusqu'à ce que j'ai mélangé deux des solutions fournies.
Par adjonction de l'élément fixe, il a travaillé. Fondamentalement, le z-index est également nécessaire pour moi:
-webkit-transform: translateZ(0);
a fait pour moi. N'a pas besoin d'utiliser les z-index.C'est un webkit question qui n'a pas encore été résolu, curieusement de faire le saut avec le JavaScript, plutôt que d'utiliser le
#
url valeur, n'est-ce pas la cause de ce problème. Pour surmonter le problème, j'ai fourni une version JavaScript qui prend la valeur d'ancrage et trouve que la position absolue de l'élément avec l'ID et sauter à:J'ai pu affiner encore ce que cela et le faire c'est qu'il ne regarde que pour les liens commençant par un
#
, plutôt que jamaisa
balise qu'il trouve.Si elle ne fonctionne pas après l'ajout de
que également ajouter
sur meta viewport
source ici
il a travaillé pour moi
J'ai rencontré le même problème dans un autre cas. C'était à cause de l'utilisation de la même id dans plusieurs endroit. Pour exemple, j'ai utilisé #2 divs.
Il semble que mozilla et I. E. prend en charge l'utilisation de la même id dans plusieurs cas. Mais chrome n'est pas. Il a réagi avec élément fixe disappering dans mon cas.
De simplement enlever les id résolu le problème.
N'a pas fonctionné pour moi, en dehors de l'appel de la modale via javascript
autre que cela, aucune des solutions ci-dessus n'a résolu mon problème.
Si aucune des réponses ci-dessus a travaillé pour vous, assurez-vous que vous n'êtes pas un mannequin comme moi et que vous avez overflow: hidden; défini sur l'élément fixe 🙁
Que si aucun des ci-dessus a travaillé à tous? cas simple des collants en-tête + mobile le menu de gauche poussant le contenu.
J'essaie de trouver un moyen pour éviter l'élément fixe (collant en-tête) en cours de traduction, mais dans ce cas, rien n'est une bonne alternative.
De sorte qu'il n'y a pas de solution de rechange à portée jusqu'à présent, il est un JS alternative que j'ai opté pour recalculer la position absolue de l'élément fixe. Voir ici: https://stackoverflow.com/a/21487975/2012407
Cela a Fonctionné pour moi . Ajouter
Overflow
propriété à votre plus haut récipient Div ou de la Forme etc.