J'essaye d'obtenir un div qui a le position:fixed
centre aligné sur ma page.
J'ai toujours pu le faire avec des divs parfaitement positionnés en utilisant ce "hack"
left: 50%; width: 400px; margin-left:-200px
... où la valeur de la marge gauche est la moitié de la largeur du div.
Cela ne semble pas fonctionner pour les divs à position fixe, mais il les place simplement avec leur coin le plus à gauche à 50% et ignore la déclaration de marge gauche.
Des idées sur la façon de résoudre ce problème afin que je puisse centrer les éléments positionnés fixes?
Et je vais ajouter un bonus M&M si vous pouvez me dire une meilleure façon d'aligner au centre des éléments absolument positionnés que la façon dont j'ai décrit ci-dessus.
Réponses:
La réponse de Koen ne centre pas exactement l'élément.
La bonne façon est d'utiliser la
CCS3 transform
propriété. Bien qu'il ne soit pas pris en charge dans certains anciens navigateurs . Et nous n'avons même pas besoin de définir une valeur fixe ou relativewidth
.Comparaison de travail de jsfiddle ici .
la source
left: 50%
déplace le div vers les 50% de la page. Mais vous devez garder à l'esprit qu'il le déplace en partant du côté gauche du div, donc le div n'est pas encore centré.translate(-50%, 0)
quitranslateX(-50%)
considère essentiellement la largeur actuelle du div et le déplace de -50% de sa largeur vers le côté gauche de l'endroit réel.Pour ceux qui ont ce même problème, mais avec un design réactif, vous pouvez également utiliser:
Cela gardera toujours votre fixe
div
centré sur l'écran, même avec un design réactif.la source
-(75/2)
dans ce cas)Vous pouvez également utiliser flexbox pour cela.
la source
<center>
laquelle était obsolète et en utilisant une technique moderne comme ledisplay: flex
et certaines propriétés associées.D'après le post ci-dessus, je pense que le meilleur moyen est
width: 100%
margin-left: auto
etmargin-right: auto
, ou pour table make italign="center"
.J'espère que cela aidera.
la source
max-width
s pour les éléments à position fixe. Vous voulez une barre latérale fixe qui occupe de manière réactive 30% de votremax-width: 1200px
page Web? Cela vous y mènera.Les div normaux devraient utiliser
margin-left: auto
etmargin-right: auto
, mais cela ne fonctionne pas pour les div fixes. La façon de contourner cela est similaire à la réponse d' Andrew , mais n'utilise pas la<center>
chose obsolète . En gros, donnez simplement un wrapper à la div fixe.Cela centrera un div fixe dans un div tout en permettant au div de réagir avec le navigateur. ie Le div sera centré s'il y a assez d'espace, mais entrera en collision avec le bord du navigateur s'il n'y en a pas; similaire à la réaction d'un div centré régulier.
la source
Si vous souhaitez centrer l'alignement d'une position fixe div à la fois verticalement et horizontalement, utilisez cette
la source
Cela devrait faire la même chose.
la source
Si vous savez que la largeur est de 400px, ce serait le moyen le plus simple de le faire, je suppose.
la source
Cela fonctionne si vous souhaitez que l'élément s'étende sur la page comme une autre barre de navigation.
width: calc (width: 100% - width tout ce qui est décentré)
Par exemple, si votre barre de navigation latérale est de 200 pixels:
largeur: calc (100% - 200px);
la source
C'est assez facile en utilisant la largeur: 70%; gauche: 15%;
Définit la largeur de l'élément à 70% de la fenêtre et laisse 15% des deux côtés
la source
J'ai utilisé ce qui suit avec Twitter Bootstrap (v3)
C'est-à-dire créer un élément pleine largeur qui est en position fixe, et y pousser simplement un conteneur, le conteneur est centré par rapport à la largeur totale. Devrait également se comporter de manière réactive.
la source
Une solution utilisant la boîte flexible; entièrement réactif:
la source
si vous ne souhaitez pas utiliser la méthode wrapper. alors vous pouvez faire ceci:
la source