19

Sto lavorando con Twitter Bootstrap v3 e desidero riordinare gli elementi in modo reattivo, utilizzando column ordering e offsetting.Riordinando le div in modo reattivo con Twitter Bootstrap?

Questo è il modo in cui vorrei utilizzare i miei elementi. A -xs o -sm punti di interruzione, con il div contenente impilati 4 consecutive:

enter image description here

a -md o -lg punti di interruzione, con il div contenente accatastati 2 ad una riga:

enter image description here

Questo è il codice corrente - So come impostare le classi sul div contenente, ma non su A, B e C:

<div class="row"> 
    <div class="containing col-xs-6 col-sm-6 col-md-3 col-lg-3"> 
     <div class="row"> 
     <div class="a col-xs-12 col-sm-12 col-md-6 col-lg-6">Content of A</div> 
     <div class="b col-xs-12 col-sm-12 col-md-6 col-lg-6">Content of B</div> 
     <div class="c col-xs-12 col-sm-12 col-md-6 col-lg-6">Content of C</div> 
     </div> 
    </div> 
    ... more containing divs... 
    </div> 

Non riesco a capire come ottenere A, B e C nell'ordine corretto con Bootstrap 3 column ordering e offsetting. È effettivamente possibile?

Questo è quanto ho utilizzando JSFiddle: http://jsfiddle.net/3vYgR/

+0

Che cosa si intende per “impilati 4/2 a una riga”? Intendi dire che la prima versione è alta 4 unità e la seconda è alta 2 unità? O vuoi dire che la prima versione può avere 4 di questi gruppi a-b-c in una linea orizzontale, e la seconda può avere 2? –

risposta

23

Penso che si desidera guardare le classi push e pull ...

<div class="row"> 
    <div class="a col-xs-12 col-sm-12 col-md-6 col-lg-6 col-lg-push-6 col-md-push-6">Content of A</div> 
    <div class="b col-xs-12 col-sm-12 col-md-6 col-lg-6 col-lg-pull-6 col-md-pull-6">Content of B</div> 
    <div class="c col-xs-12 col-sm-12 col-md-6 col-lg-6 col-lg-push-6 col-md-push-6">Content of C</div> 
</div> 

Demo: http://bootply.com/77853

+4

Questo è esattamente quello che volevo, grazie! Per chi legge qui c'è il link ai documenti push/pull: http://getbootstrap.com/css/#grid-column-ordering anche se ancora non capisco esattamente cosa spingono e tirano ... – Richard

+1

Inoltre, grazie per l'introduzione a http://bootply.com/ - molto utile. – Richard

+1

Hai solo bisogno di una nuova classe di griglia quando qualcosa cambia come andare da 12 colonne a 6. Non c'è bisogno di classi col-sm- * o col-lg- * perché ereditano rispettivamente xs e md. –

1

Qual è il motivo per non utilizzare metodi più tradizionali su questo, vale a dire. fluttante B a sinistra e gli altri elementi a destra?

Come se si aggiunge questo alla corrente CSS nel vostro jsfiddle:

.b { 
    float: left; 
    width: 50%; 
    height: 100px; 
} 
.a, .c { 
    float: right; 
    width: 50%; 
    height: 50px; 
} 

Vedi http://jsfiddle.net/E6BFk/

io non sono sicuro che l'ordinazione colonna di Sputafuoco potrebbe ottenere l'effetto di sovrapposizione, forse solo il riordino ... Anche se la documentazione è piuttosto sottile su quella caratteristica.

0

Ho provato il push/pull, come indicato nella risposta da Skelly, ma finisce per C in una nuova riga una volta applicate altezze: http://www.bootply.com/Q3djHYawgb#

Se B può essere mostrato per primo quando mostrato in dimensioni ridotte, allora penso che abbia più senso creare una riga all'interno della colonna di destra per contenere A e C:

<div class="containing row"> 
    <div class="b col-xs-12 col-md-6">Content of B</div> 
    <div class="ac col-xs-12 col-md-6"> 
     <div class="row"> 
      <div class="a col-xs-12">Content of A</div> 
     </div> 
     <div class="row"> 
      <div class="c col-xs-12">Content of C</div> 
     </div> 
    </div> 
</div> 

Vedi http://jsfiddle.net/hoodoo99/L2BE9/

+0

L'esempio mette A sotto B quando XS calcia. –

0

La risposta fornita da @skelly è ottimo punto di partenza, ma non causare alcuni problemi di allineamento verticale. Immaginate Un è un div alto, quindi C viene allineata verticalmente al di sotto A .:

[A] [B] 
[ ] 
    [C] 

Inoltre, se si vuole prendere un passo ulteriore potrebbe anche essere necessario considerare l'utilizzo di clearfix blocchi.Per esempio;

<!-- Add clearfix for only the required viewport(s) --> 
<div class="clearfix visible-md-block visible-lg-block"></div> 

Senza clearfixmd o lg potrebbe finire come:

[A] [B] 
    [C] [D] 

Ciò è particolarmente importante se si desidera più di 2 elementi nella "colonna" finale, o le altezze degli elementi iniziare a gettare altri elementi fuori allineamento.

Con il clearfixmd o lg sarebbe:

[A] [B] 
    [C] 
    [D] 

Esempio violino: http://jsfiddle.net/L5174o8d/

+0

Esiste un modo per risolvere il problema di allineamento verticale? quello che voglio è l'opposto di questo, ma ho lo stesso problema di allineamento. ex: https://jsfiddle.net/bqop535n/ – Wei

+0

Se ho capito bene, allora dovresti rimuovere il clearfix e push/pull, ad esempio: https://jsfiddle.net/qkaL02z8/ –

+0

https: // jsfiddle .net/qkaL02z8/1/aggiungi float ottieni ciò di cui ho bisogno. – Wei