Existe-t-il un moyen plus flexible pour aligner à droite "Contact" que pour l'utiliser position: absolute
?
.main { display: flex; }
.a, .b, .c { background: #efefef; border: 1px solid #999; }
.b { flex: 1; text-align: center; }
.c { position: absolute; right: 0; }
<h2>With title</h2>
<div class="main">
<div class="a"><a href="#">Home</a></div>
<div class="b"><a href="#">Some title centered</a></div>
<div class="c"><a href="#">Contact</a></div>
</div>
<h2>Without title</h2>
<div class="main">
<div class="a"><a href="#">Home</a></div>
<!--<div class="b"><a href="#">Some title centered</a></div>-->
<div class="c"><a href="#">Contact</a></div>
</div>
Réponses:
Voici. Placez
justify-content: space-between
sur le conteneur flexible.la source
justify-content: flex-end
.c::after
pseudo-élément. D'après mon expérience,margin-left: auto;
c'est la voie à suivre.flex-flow: row-reverse;
Une approche plus flexible consisterait à utiliser une
auto
marge gauche (les éléments flex traitent les marges automatiques un peu différemment que lorsqu'ils sont utilisés dans un contexte de mise en forme de bloc).Violon mis à jour:
la source
flex
,order
, etc.).margin-left: auto;
style.margin-left: auto;
.Si vous souhaitez utiliser FlexBox pour cela, vous devriez être en mesure, en faisant cela (
display: flex
sur le conteneur,flex: 1
sur les articles ettext-align: right
sur.c
):... ou alternativement (encore plus simple), si les articles n'ont pas besoin de se rencontrer, vous pouvez utiliser
justify-content: space-between
sur le conteneur et supprimertext-align
complètement les règles:Voici une démo sur Codepen pour vous permettre d'essayer rapidement ce qui précède.
la source
space-between
était exactement ce que je cherchais, merci!Vous pouvez également utiliser un remplissage pour remplir l'espace restant.
J'ai mis à jour la solution avec 3 versions différentes. Ceci en raison de la discussion sur la validité de l'utilisation d'un élément de remplissage supplémentaire. Si vous exécutez le code coupé, vous voyez que toutes les solutions font des choses différentes. Par exemple, si vous définissez la classe de remplissage sur l'élément b, cet élément remplira l'espace restant. Cela a l'avantage qu'il n'y a pas d'espace «mort» qui n'est pas cliquable.
la source
justify-content: space-between
est "tellement" css, sérieusement? Pas besoin de commentaires supplémentaires (mais si vous le souhaitez - bienvenue pour discuter). Cette réponse a le droit d'être ici, parce qu'il est une solution. Mais certainement pas optimal. Idk, vous n'avez peut-être pas remarqué mais la plupart des css d'une autre réponse sont des OP et les réponses réduisent en fait (un peu) la quantité de css de l'auteur. Cette réponse n'a pas moins de css que les autres (ne fonctionnera pas sans css d'OP - jsfiddle.net/63ma3b56 ). Mais il a encore un élément html.Ou vous pouvez simplement utiliser
justify-content: flex-end
la source
justify-content
attribut est un attribut du flex-container, voir le cheatsheet flexy de Chris Coyer: css-tricks.com/snippets/css/a-guide-to-flexboxAussi facile que
la source
Ajoutez la classe CSS suivante à votre feuille de style:
Placez un élément vide entre l'élément de gauche et l'élément que vous souhaitez aligner à droite:
<span class="my-spacer"></span>
la source
Si vous avez besoin d'un élément à aligner à gauche (comme un en-tête) mais de plusieurs éléments à droite (comme 3 images), alors vous feriez quelque chose comme ceci:
Voici à quoi cela ressemblera (seul le CSS relavent a été inclus dans l'extrait ci-dessus)
la source
'justification-contenu: flex-end' fonctionnait dans le conteneur de la boîte de prix.
la source
Je trouve que l'ajout de «justifier-contenu: flex-end» au conteneur flex résout le problème tandis que «justifier-contenu: espace entre» ne fait rien.
la source
Pour ceux qui utilisent Angular et Flex-Layout, utilisez ce qui suit sur le conteneur flex-item:
<div fxLayout="row" fxLayoutAlign="flex-end">
Voir les documents fxLayoutAlign ici et les documents fxLayout complets ici .
la source
Exemple de code basé sur la réponse de TetraDev
Images à droite:
Images à gauche:
la source