Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reordering divs responsively with Twitter Bootstrap?

I am working with Twitter Bootstrap v3 and want to reorder elements responsively, using column ordering and offsetting.

This is how I would like to use my elements. At -xs or -sm breakpoints, with the containing div stacked 4 to a row:

enter image description here

At -md or -lg breakpoints, with the containing div stacked 2 to a row:

enter image description here

This is the current code - I know how to set the classes on the containing div, but not on A, B and 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>

I can't figure out how to get A, B and C in the right order with Bootstrap 3's column ordering and offsetting. Is it actually possible?

This is as far as I've got using JSFiddle: http://jsfiddle.net/3vYgR/

like image 601
Richard Avatar asked Aug 29 '13 15:08

Richard


2 Answers

Users of Bootstrap 4 or Bootstrap 5 will want to see this question: Bootstrap change order of columns


Bootstrap 3 (original answer)

I think you want to look at the push and pull classes...

<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

like image 148
Zim Avatar answered Nov 18 '22 00:11

Zim


Any reason to not use more traditional methods on this, ie. floating B left and the other elements to the right?

Like if you added this to current CSS in your jsfiddle:

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

See http://jsfiddle.net/E6BFk/

I'm not sure that Bootstrap's column ordering could accomplish the stacking effect, perhaps only the re-ordering... Though the documentation is pretty slim on that feature.

like image 25
rsigg Avatar answered Nov 17 '22 23:11

rsigg