Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSS change div order without flex

Tags:

html

css

given a HTML of:

<div class="class">1</div>
<div class="class">2</div>
<div class="class">3</div>
<div class="class">4</div>

I know I can do a display:flextogether with:

.class :nth-child(1) { order: 2 }
.class :nth-child(2) { order: 4 }
.class :nth-child(3) { order: 1 }
.class :nth-child(4) { order: 3 }

which should produce

<div class="class">3</div>
<div class="class">1</div>
<div class="class">4</div>
<div class="class">2</div>

Is there a way to do this without using the flexbox in combination with its order property?

like image 244
ItFreak Avatar asked Oct 23 '18 07:10

ItFreak


1 Answers

You can use grid layout, which has similar order properties.

.boxes {
  display: grid;
}

.class:nth-of-type(1) {
  order: 2;
}

.class:nth-of-type(2) {
  order: 4;
}

.class:nth-of-type(3) {
  order: 1;
}

.class:nth-of-type(4) {
  order: 3;
}
<div class="boxes">
  <div class="class">1</div>
  <div class="class">2</div>
  <div class="class">3</div>
  <div class="class">4</div>
</div>
like image 157
jo3rn Avatar answered Oct 27 '22 05:10

jo3rn