2016-06-15 31 views
5

Ho un requisito come illustrato di seguito:elementi Align utilizzando flex

|[]     [][]| 

Un elemento a sinistra della finestra e due elementi sul lato destro della finestra. Per imparare display: flex, sto provando questo layout senza avvolgere gli elementi.

Questo layout è possibile con il flexbox?

Ecco il codice HTML:

<div class="parent"> 
    <div class="child child--left"></div> 
    <div class="child child--right"></div> 
    <div class="child child--right"></div> 
</div> 

Ho provato ad utilizzare align-items e align-self ma non serve. Per favore aiuto.

CSS:

.parent{ 
    display: flex; // flexbox 
} 

risposta

3

È possibile utilizzare margin-left:auto nel div è necessario nella parte destra:

.parent { 
 
    display: flex; 
 
    height: 100px; 
 
    width: 100%; 
 
} 
 

 
.child { 
 
    flex: 0 0 20px; 
 
    border: solid 1px green; 
 
} 
 

 
.child--right { 
 
    margin-left: auto; 
 
}
<div class="parent"> 
 
    <div class="child"></div> 
 
    <div class="child child--right"></div> 
 
    <div class="child"></div> 
 
</div>

+0

nice. dove hai visto questo trucco? Sto solo chiedendo di poterne imparare di più. Grazie. –

+1

Qui, in stackoverflow: http://stackoverflow.com/questions/32551291/in-css-flexbox-why-are-there-no-justify-items-and-justify-self-properties – blonfu

+0

arghh .. quindi il mio post è duplicato. Avrebbe dovuto cercare meglio. Comunque grazie :) –

1

è necessario utilizzare un spacer definito come flex:auto; al fine di allineare i Flex-box come previsto: DEMO

CSS

.parent{ 
    display:flex; 
} 
.spacer{ 
    flex:auto; 
} 

e il tuo HTML sarebbe:

<div class="parent"> 
    <div class="child child--left"></div> 
    <div class="spacer"></div> 
    <div class="child child--right"></div> 
    <div class="child child--right"></div> 
</div> 
+0

Grazie, questo è bello. Userò questo nel mio progetto. ma ho sentito che la risposta di blonfu è buona perché gestisce in css. + 1'ed :) –

+0

sei il benvenuto, questo è quello che uso sempre nei miei progetti –

0

È possibile utilizzare Flex per riempire uno spazio

body { 
 
    margin: 0; 
 
} 
 

 
.flex { 
 
    display: flex; 
 
    background: purple; 
 
    width: 100%; 
 
    height: 75px; 
 
} 
 
.item { 
 
    background: orange; 
 
    width: 50px; 
 
    height: 50px; 
 
    margin: 12.5px; 
 
} 
 
.filler { 
 
    flex-grow: 1; 
 
}
<div class="flex"> 
 
    <div class="item"></div> 
 
    <div class="filler"></div> 
 
    <div class="item"></div> 
 
    <div class="item"></div> 
 
</div>

noterete ho aggiunto un div con la classe e si imposta filler deve avere flex-grow: 1; Ciò significa che div occuperà sempre lo spazio rimanente.

0

Applicando: margin-<direction>: auto al figlio di un elemento di flessione sarà essenzialmente galleggiare la voce nella direzione opposta (senza nessuna delle complicazioni di float).

.child--right { 
    margin-left: auto; 
} 
0

Un modo per farlo senza usare un elemento di riempimento aggiuntivo consiste nell'utilizzare i margini automatici.

CSS

.child--left { 
    margin-right: auto; /* <== here's the auto margin */ 
} 

Si aggiungerà un margine a destra del .child--left che riempirà lo spazio disponibile all'interno .parent (in sostanza che agisce come se ci fosse un elemento di riempimento tra destra e sinistra i bambini, ma in realtà senza l'elemento di riempimento)