Это довольно сложно. Вот решение, которое я придумал. Вам нужно будет использовать немного jQuery для получения желаемого результата.
Вот HTML, обратите внимание, как я переключился столбцы:
<div class="container text-center">
<div class="row">
<div class="col-sm-4 col-lg-3 col-lg-push-9">
<div class="alert alert-warning">A</div>
</div>
<div class="col-sm-8 col-lg-6 col-lg-pull-0 big">
<div class="alert alert-danger">C</div>
</div>
<div class="col-sm-4 col-lg-3 col-lg-pull-9 small">
<div class="alert alert-info">B</div>
</div>
</div>
</div>
А вот JQuery:
<script>
var $iW = $(window).innerWidth();
if ($iW < 768){
$('.small').insertBefore('.big');
}else{
$('.big').insertBefore('.small');
}
</script>
Примечание: Недостатком является то, что JQuery не связан изменение размера окна. Поэтому, если вы изменили размер окна после загрузки документа, у вас будет довольно плохой результат. Однако это также можно исправить, используя $(window).resize(function(){});
Однако, если вы вообще не хотите использовать JS. Вот еще одно решение, которое потребует дублирования одного из ваших блоков. Если содержимое этого блока статично и не много, я считаю, что это хороший компромисс. Тем не менее, вы также можете немного настроить его в соответствии с вашими потребностями.
Вот HTML:
<div class="container text-center">
<div class="row">
<div class="col-sm-4 col-lg-3 col-lg-push-9">
<div class="alert alert-warning">A</div>
</div>
<div class="col-sm-4 small-screen-only">
<div class="alert alert-info">B</div>
</div>
<div class="col-sm-8 col-lg-6 col-lg-pull-0 big">
<div class="alert alert-danger">C</div>
</div>
<div class="col-sm-4 col-lg-3 col-lg-pull-9 small">
<div class="alert alert-info">B</div>
</div>
</div>
</div>
Обратите внимание на дублирование блока В.
Вот CSS:
.small-screen-only{
display: none;
}
@media all and (max-width: 767px)
{
.small-screen-only{
display: block
}
.small{
display: none;
}
}
лично я бы выбрал вариант CSS, поскольку это более родной для браузера. Даже если содержимое блоков было динамически добавлено, я считаю, что вы все равно можете найти способ обойти его.
Как вы думаете, это невозможно сделать только с помощью css? –
@SS Я лично также всегда стараюсь найти способ устранить js, где это возможно. Если содержимое ваших блоков статично, а не много, и вы не возражаете, чтобы их дублировать. Я собираюсь добавить второе решение, которое использует только CSS. – Medard