この質問にはすでに素晴らしい答えがありますが、ここですべての可能性を探るという精神で、絶対配置方法とは異なり、dom 要素を並べ替えながらスペースを占有できるようにする別の手法があります。
この方法は、最新のすべてのブラウザーと IE9+ (基本的に、display:table をサポートするすべてのブラウザー) で機能しますが、最大 3 つの兄弟でしか使用できないという欠点があります。
//the html
<div class='container'>
<div class='div1'>1</div>
<div class='div2'>2</div>
<div class='div3'>3</div>
</div>
//the css
.container {
display:table;
}
.div1 {
display:table-footer-group;
}
.div2 {
display:table-header-group;
}
.div3 {
display:table-row-group;
}
これにより、要素が 1,2,3 から 2,3,1 に並べ替えられます。基本的に、表示が table-header-group に設定されているものはすべて上部に配置され、table-footer-group は下部に配置されます。当然、table-row-group は要素を真ん中に置きます。
この方法は迅速で優れたサポートがあり、必要な css はフレックスボックス アプローチよりもはるかに少ないため、たとえばモバイル レイアウト用にいくつかのアイテムを交換するだけの場合は、この手法を除外しないでください。
codepen でライブ デモを確認できます: http://codepen.io/thepixelninja/pen/eZVgLx