Comment aligner les 3 divs (gauche/centre/droite) à l'intérieur d'une div?
Je veux avoir 3 divs alignés à l'intérieur d'un div conteneur, quelque chose comme ceci:
[[LEFT] [CENTER] [RIGHT]]
Div conteneur est de 100% de large (pas de définir la largeur), et le centre div doit rester au centre après redimensionnement du conteneur.
J'ai donc mis:
#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}
Mais il devient:
[[LEFT] [CENTER] ]
[RIGHT]
Des conseils?
- Si le conteneur devient plus étroit que 300px de large, qui va arriver, sauf si vous définissez la propriété overflow.
- C'est exactement le genre de chose CSS flexbox est construit pour. stackoverflow.com/a/32122011/3597276
- pour
flex
.flexbox
est génial! Pas plusfloat
s etclear
. - Flexbox et également de la Grille: jsfiddle.net/w0s4xmc0/12963
Vous devez vous connecter pour publier un commentaire.
Avec CSS, mettre votre divs comme (flotteurs en premier):
P. S. Vous pouvez également flotter à droite, puis à gauche, puis centre. La chose importante est que les flotteurs avant de venir à la "main" de la section centrale.
P. P. S. Vous souhaitez souvent la dernière à l'intérieur de
#container
cet extrait:<div style="clear:both;"></div>
qui permettra de prolonger#container
à la verticale pour contenir à la fois des flotteurs latéraux au lieu de prendre sa hauteur seulement de#center
et, éventuellement, permettant aux côtés de dépasser le bas.border:solid
. Si c'est 100% puis placez-le dans une autre div en position à l'intérieur de votre page.display: inline-block;
avec unclear: both;
Si vous ne souhaitez pas modifier votre structure HTML vous pouvez aussi le faire par l'ajout de
text-align: center;
à l'élément wrapper et undisplay: inline-block;
à l'centrée élément.Démo Live: http://jsfiddle.net/CH9K8/
Aligner Trois Divs Horizontale À L'Aide De Flexbox
Ici est un CSS3 méthode pour l'alignement des divs horizontalement à l'intérieur d'une div.
CSS:
HTML:
jsFiddle
La
justify-content
propriété prend cinq valeurs:flex-start
(par défaut)flex-end
center
space-between
space-around
Dans tous les cas, les trois divs sont sur la même ligne. Pour une description de chaque valeur, voir: https://stackoverflow.com/a/33856609/3597276
Avantages de flexbox:
flexbox est un moderne (CSS3) technique avec un large éventail d'options.
Pour en savoir plus sur flexbox visite:
Prise en charge du navigateur: Flexbox est pris en charge par tous les navigateurs principaux, sauf IE < 10. Certaines des dernières versions de navigateur comme Safari 8 et IE10, exiger fournisseur de préfixes. Un moyen rapide pour ajouter des préfixes utilisation Autoprefixer. Plus de détails dans cette réponse.
Float propriété n'est pas utilisée pour aligner le texte.
Cette propriété est utilisée pour ajouter un élément à gauche ou à droite ou au centre.
CSS:
HTML:
pour
float:left
sortie sera[First][second][Third]
pour
float:right
sortie sera[Third][Second][First]
Qui signifie float => à gauche de la propriété va ajouter votre prochain élément à gauche de la précédente, Même avec droit
Aussi vous devez tenir compte de la largeur de l'élément parent, si la somme des largeurs des éléments d'enfant à dépasser la largeur de l'élément parent alors l'élément suivant sera ajouté à la prochaine ligne
HTML:
[Premier] [Seconde]
[Troisième]
Donc, vous devez tenir compte de Tous ces aspects pour obtenir le résultat parfait
J'aime mes barres serré et dynamique. C'est pour CSS 3 & HTML 5
Tout d'abord, le réglage de la Largeur de 100px est un facteur limitant. Ne pas le faire.
Deuxième, réglage du conteneur largeur de 100% de travail ok, étaient jusqu'à parler d'une en-tête/pied de page de la barre pour l'ensemble de l'application, comme la navigation ou de crédits/droit d'auteur bar. Utilisation
right: 0;
la place pour ce scénario.Vous utilisez des id (hash
#container
,#left
, etc) au lieu de classes (.container
,.left
, etc), ce qui est bien, sauf si vous voulez répéter votre style de modèle ailleurs dans votre code. Je voudrais examiner à l'aide de classes à la place.Pour le code HTML, pas besoin de swap afin de: gauche, centre, & droite.
display: inline-block;
résout ce, le retour de votre code à quelque chose de plus propre à la logique et dans l'ordre.Enfin, vous devez effacer les flotteurs tout en place pour qu'il ne plaisante pas avec les futurs
<div>
. Vous faites cela avec laclear: both;
Pour résumer:
HTML:
CSS:
Point de Bonus si vous utilisez HAML et SASS 😉
HAML:
SASS:
Il y a plusieurs astuces disponibles pour aligner les éléments.
01. À L'Aide De La Table De Truc
CSS:
HTML:
02. À L'Aide De Flex Truc
CSS:
HTML:
03. À L'Aide Du Flotteur Truc
CSS:
HTML:
Cela peut être fait facilement en utilisant le CSS3 Flexbox, une fonction qui sera utilisée dans le futur(Quand
<IE9
est complètement morte) par presque tous les navigateurs.Vérifier la Compatibilité du Navigateur Table
HTML
CSS
De sortie:
CSS:
HTML:
Avec twitter bootstrap :
réponse possible, si vous souhaitez conserver l'ordre de l'html et de ne pas utiliser flex.
HTML
CSS
Code Stylo Lien
HTML:
CSS:
text-align:center;
donne un parfait centre aligner.JSFiddle Démo
J'ai fait une autre tentative de le simplifier et de le réaliser sans la nécessité d'un conteneur.
HTML
CSS
Vous pouvez le voir en direct à JSFiddle
À l'aide de Bootstrap 3 j'ai créer 3 divs de largeur égale (en 12 mise en page en colonnes 4 colonnes pour chaque div).
De cette façon, vous pouvez garder votre zone centrale centré même si gauche/droite sections ont des largeurs différentes (s'ils ne font pas de dépassement de leurs colonnes' espace).
HTML:
CSS:
CodePen
Pour créer cette structure sans bibliothèques, j'ai copié quelques règles de Bootstrap CSS.
HTML:
CSS:
CopePen
Voici les changements que j'ai eu à faire à la accepté de répondre quand je l'ai fait avec un image comme le centre de l'élément:
#center
dans ce cas). Si ce n'est pas le cas, vous devrez mettre endisplay
àblock
, et il semble, au centre, par rapport à l'espace entre les flottait éléments.Assurez-vous de définir la taille de l'image et son conteneur:
Vous pouvez essayer ceci:
Votre code html comme ceci:
et votre code css comme ceci:
donc, c'est la sortie devrait se faire comme ceci:
Vous l'avez fait correctement, vous avez seulement besoin de vider votre flotte.
Ajoutez simplement
à votre conteneur de classe.
La solution la plus simple est de créer un tableau avec 3 colonnes et le centre de la table.
html:
css: