J'ai besoin de placer un élément div
(avec position:absolute;
) au centre de ma fenêtre. Mais j'ai du mal à le faire, car la largeur est inconnue .
J'ai essayé ça. Mais il doit être ajusté car la largeur est sensible.
.center {
left: 50%;
bottom:5px;
}
Des idées?
Réponses:
la source
position: fixed
mais qu'en cas de hauteur inconnue de la superposition, des barres de défilement pour la superposition devront être implémentées<html>
. Mais l'<html>
élément n'a pas deheight
spécifié, il prend donc la hauteur de tout le contenu du document, ce qui n'est rien car le seul contenu est absolument positionné (retiré du flux de contenu). L'ajoutheight: 100%
à l'<html>
élément fait une différence.Cela fonctionne pour moi:
la source
width
doit être défini sur une valeur spécifique pour que cela fonctionne.auto
et100%
ne centre pas l'élément.display: block;
est un must.position: absolute;
n'est PAS un must. Toutes les valeurs fonctionneront. L'élément parentposition
doit être défini sur autre chose questatic
.left
Il n'est pas nécessaire de définir etright
de0
.margin-left: auto; margin-right: auto;
fera le travail.Solution réactive
Voici une bonne solution pour une conception réactive ou des dimensions inconnues en général si vous n'avez pas besoin de prendre en charge IE8 et inférieur.
Afficher l'extrait de code
Voici un JS Fiddle
L'indice est, c'est
left: 50%
relatif au parent tandis que latranslate
transformation est relative à la largeur / hauteur des éléments.De cette façon, vous avez un élément parfaitement centré, avec une largeur flexible sur l'enfant et le parent. Bonus: cela fonctionne même si l'enfant est plus grand que le parent.
Vous pouvez également le centrer verticalement avec ceci (et encore une fois, la largeur et la hauteur du parent et de l'enfant peuvent être totalement flexibles (et / ou inconnues)):
Gardez à l'esprit que vous pourriez également avoir besoin du
transform
préfixe du fournisseur. Par exemple-webkit-transform: translate(-50%,-50%);
la source
webkit-
préfixe comme je l'ai suggéré.transform: translate
semble rendreposition: fixed
inutilisable chez les enfants. La réponse acceptée fonctionne mieux dans ce cas.Vraiment un bon article .. Je voulais juste ajouter si quelqu'un veut le faire avec une seule balise div, puis voici la sortie:
Prenant
width
comme900px
.Dans ce cas, il faut savoir à l'
width
avance.la source
"because the width is unknown"
... cela ne répond pas à la questionAbsolute Center
HTML:
CSS:
Démo: http://jsbin.com/rexuk/2/
Testé dans Google Chrome, Firefox et IE8
J'espère que cela t'aides :)
la source
ce travail pour vertical et horizontal
et si vous voulez placer l'élément au centre du parent, définissez la position du parent par rapport
Éditer:
pour le centre vertical, alignez la hauteur définie sur votre élément. merci à @Raul
si vous voulez placer l'élément au centre du parent, définissez la position du parent sur relative
la source
À la recherche d'une solution, j'ai obtenu des réponses ci-dessus et j'ai pu centrer le contenu sur la réponse de Matthias Weiler mais en utilisant l'alignement du texte.
Fonctionné avec Chrome et Firefox.
la source
Si vous devez également centrer horizontalement et verticalement:
la source
** SOLUTION RÉACTIVE **
En supposant que l'élément dans le div, est un autre div ...
cette solution fonctionne bien
le conteneur peut être de n'importe quelle taille (doit être relatif)
L'élément ( div ) peut également être de n'importe quelle taille (doit être plus petit que le conteneur )
Le résultat ressemblera à ceci. Exécutez l'extrait de code
Je l'ai trouvé très utile
la source
Ceci est un mélange d'autres réponses, qui ont fonctionné pour nous:
la source
Je comprends que cette question a déjà quelques réponses, mais je n'ai jamais trouvé de solution qui fonctionnerait dans presque toutes les classes qui soit également logique et élégante, alors voici ma position après avoir peaufiné un tas:
Ce que cela signifie, c'est me donner un
top: 50%
et unleft: 50%
, puis transformer (créer un espace) sur les deux axes X / Y à la-50%
valeur, dans un sens "créer un espace miroir".En tant que tel, cela crée un espace égal sur tous les 4 points d'une div, qui est toujours une boîte (a 4 côtés).
Cette volonté:
la source
translate(-50%,-50%);
?Fonctionne sur toute largeur inconnue aléatoire de l'élément positionné absolu que vous souhaitez avoir au centre de votre élément conteneur.
Démo
la source
Flex peut être utilisé pour centrer la div positionnée absolue.
Afficher l'extrait de code
la source
display: -webkit-flex;
?Pour autant que je sache, cela est impossible à réaliser pour une largeur inconnue.
Vous pouvez - si cela fonctionne dans votre scénario - positionner absolument un élément invisible avec 100% de largeur et de hauteur, et avoir l'élément centré là-dedans en utilisant margin: auto et éventuellement vertical-align. Sinon, vous aurez besoin de Javascript pour le faire.
la source
Je voudrais ajouter à la réponse de @ bobince:
Amélioré: /// cela fait que la barre de défilement horizontale n'apparaît pas avec de grands éléments dans la div centrée.
la source
Voici un plugin jQuery utile pour ce faire. Trouvé ici . Je ne pense pas que ce soit possible uniquement avec CSS
la source
version sass / compass de la solution réactive ci-dessus:
la source
transform: translate(-50%, -50%)
rend le texte et tous les autres contenus flous sur OS X à l'aide des navigateurs webkit. keithclark.co.uk/articles/gpu-text-rendering-in-webkit-webkit-font-smoothing: antialiased;
je l'ai glané dans l'article que vous avez posté!Ma méthode de centrage préférée:
JSFiddle ici
la source
Cela a fonctionné pour moi:
la source
Je sais que j'ai déjà fourni une réponse, et ma réponse précédente, ainsi que d'autres données, fonctionne très bien. Mais je l'ai utilisé dans le passé et cela fonctionne mieux sur certains navigateurs et dans certaines situations. J'ai donc pensé que je donnerais aussi cette réponse. Je n'ai pas "édité" ma réponse précédente et je ne l'ajoute pas car je pense que c'est une réponse entièrement distincte et que les deux que j'ai fournies ne sont pas liées.
HTML:
CSS:
la source
la source
HTML
CSS
http://jsfiddle.net/f51rptfy/
la source
Cette solution fonctionne si l'élément a
width
etheight
la source
la solution de cette question n'a pas fonctionné pour mon cas .. Je fais une légende pour certaines images et j'ai résolu d'utiliser ce
la source
HTML:
CSS:
Ceci et d'autres exemples ici
la source
C'est une astuce que j'ai trouvée pour faire flotter un DIV exactement au centre d'une page. Vraiment moche bien sûr, mais fonctionne dans tous
Points et tirets
Nettoyeur
Wow, ces cinq années se sont écoulées, non?
la source
la source
Vous pouvez placer l'image dans un div et ajouter un id de div et avoir le CSS pour ce div avoir un
text-align:center
HTML:
CSS:
la source
la source
Une approche simple qui a fonctionné pour moi de centrer horizontalement un bloc de largeur inconnue:
Une propriété d'alignement de texte peut être ajoutée à l'ensemble de règles #block pour aligner son contenu indépendamment de l'alignement du bloc.
Cela a fonctionné sur les versions récentes de Firefox, Chrome, IE, Edge et Safari.
la source