#menu {
position: fixed;
width: 800px;
background: rgb(255, 255, 255); /* The Fallback */
background: rgba(255, 255, 255, 0.8);
margin-top: 30px;
}
Je sais que cette question est un million de fois là-bas, mais je ne trouve pas de solution à mon cas. J'ai un div, qui devrait être fixé sur l'écran, même si la page défile, elle doit toujours rester CENTRÉE au milieu de l'écran!
Le div doit avoir une 500px
largeur, doit être 30px
éloigné du haut (marge en haut), doit être centré horizontalement au milieu de la page pour toutes les tailles de navigateur et ne doit pas bouger lors du défilement du reste de la page.
Est-ce possible?
Réponses:
la source
-400
est dû à la largeur de la div définie800
.Les réponses ici sont dépassées. Vous pouvez maintenant facilement utiliser une transformation CSS3 sans coder en dur une marge . Cela fonctionne sur tous les éléments, y compris les éléments sans largeur ni largeur dynamique.
Centre horizontal:
Centre vertical:
À la fois horizontal et vertical:
La compatibilité n'est pas un problème: http://caniuse.com/#feat=transforms2d
la source
Si l'utilisation de blocs en ligne est une option, je recommanderais cette approche:
J'ai écrit un court article à ce sujet ici: http://salomvary.github.com/position-fixed-horizontally-centered.html
la source
width
ou quelque chose - contrairement à la réponseEdit septembre 2016: Bien que ce soit bien d'avoir encore un vote positif occasionnel pour cela, parce que le monde a évolué, j'irais maintenant avec la réponse qui utilise la transformation (et qui a une tonne de votes positifs). Je ne ferais plus ça de cette façon.
Une autre façon de ne pas avoir à calculer une marge ou d'avoir besoin d'un sous-conteneur:
la source
bottom:0
garantirait que le menu est toujours centré verticalement, mais je vois maintenant que ce n'est pas ce que l'OP a demandé. :)Il est possible de centrer horizontalement la div de cette façon:
html:
css:
En utilisant de cette façon, vous aurez toujours votre bloc intérieur centré, en plus il peut être facilement transformé en vrai responsive (dans l'exemple, il sera juste fluide sur des écrans plus petits), donc pas de limitation comme dans l'exemple de question et dans la réponse choisie .
la source
... ou vous pouvez envelopper votre menu div dans un autre:
la source
Voici une autre solution à deux div. J'ai essayé de le garder concis et non codé en dur. Tout d'abord, le HTML attendu:
Le principe derrière le css suivant est de positionner un côté de "externe", puis d'utiliser le fait qu'il suppose la taille de "interne" pour décaler relativement ce dernier.
Cette approche est similaire à celle de Quentin, mais l'intérieur peut être de taille variable.
la source
Voici une solution flexbox lors de l'utilisation d'un div wrapper plein écran. justify-content centre son div enfant horizontalement et align-items le centre verticalement.
la source