https://jsfiddle.net/vhem8scs/
Ist es möglich, zwei Elemente links und ein Element rechts an der Flexbox auszurichten? Der Link zeigt es deutlicher. Das letzte Beispiel ist das, was ich erreichen möchte.
In der Flexbox habe ich einen Codeblock. Mit float habe ich vier Codeblöcke. Das ist ein Grund, warum ich Flexbox bevorzuge.
HTML
<div class="wrap">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
<!-- DESIRED RESULT -->
<div class="result">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
CSS
.wrap {
display: flex;
background: #ccc;
width: 100%;
justify-content: space-between;
}
.result {
background: #ccc;
margin-top: 20px;
}
.result:after {
content: '';
display: table;
clear: both;
}
.result div {
float: left;
}
.result div:last-child {
float: right;
}
Antworten:
Um ein Flex-Kind nach rechts auszurichten, stellen Sie es mit ein
margin-left: auto;
Aus der Flex-Spezifikation :
Geige aktualisiert
Code-Snippet anzeigen
Hinweis:
Sie können einen ähnlichen Effekt erzielen, indem Sie Flex-Grow einstellen: 1 für das mittlere Flex-Element (oder die Kurzschrift
flex:1
), wodurch das letzte Element ganz nach rechts verschoben wird. ( Demo )Der offensichtliche Unterschied besteht jedoch darin, dass das mittlere Element größer wird, als es möglicherweise sein muss. Fügen Sie den Flex-Elementen einen Rahmen hinzu, um den Unterschied zu erkennen.
Demo
Code-Snippet anzeigen
quelle
auto
Rand verwendet den leeren Raum im Container, um die Flex-Elemente zu trennen. Die Eigenschaftflex-grow
/flex
nimmt diesen leeren Raum und gibt ihn an das Flex-Element weiter, das um diesen Betrag erweitert wird. Wie von Danield erwähnt, vergrößert die letztere Methode das Flex-Element ZWEI, was Sie möglicherweise nicht möchten.div:nth-last-child(4) { margin-left: auto }
Codepen.io/danield770/pen/ERyoarGruppieren Sie für eine knappe, reine Flexbox-Option die linksbündigen und die rechtsbündigen Elemente:
und verwenden
space-between
:Auf diese Weise können Sie mehrere Elemente rechts (oder nur eines) gruppieren.
https://jsfiddle.net/c9mkewwv/3/
quelle
display: inline;
oder sinddisplay: inline-block;
, werden sie gestapelt, anstatt alle in einer Reihe, wie dies bei Flexbox der Fall wäre.One
undTwo
vondiv
s nachspan
s - wenn sie nochdisplay: block;
wären, würden sie in separate Zeilen fließen. Da das OP ursprünglichdiv
s hatte, wollte ich nur darauf hinweisen, dass das einfache Einfügen in ein anderesdiv
nicht funktionieren würde, ohne die Anzeige der ursprünglichen Tags zu ändern.display: flex
hat dies keinen Einfluss mehr auf ihr Layout. Wenn Sie divs verwenden möchten, ja,inline
oderinline-block
würde funktionieren. Aber natürlich auchflex
, da wir es bereits für die Standardeinstellungflex-direction: row
mit übergeordneten Divs verwenden. Ex. jsfiddle.net/ynbb5964/2Zum Ausrichten einiger Elemente (headerElement) in der Mitte und des letzten Elements rechts (headerEnd).
quelle