J'ai deux colonnes avec la classe col-md-12
chaque.
Dans la vue du bureau, ils devraient s'afficher comme suit:
Col **1**
Col **2**
Dans la vue mobile, le devrait s'afficher comme suit:
Col **2**
Col **1**
Est-ce même possible avec l'ordre des colonnes de Bootstrap?
Mon code actuel:
<div class="row">
<div class="col-xs-Push-12 col-md-12">
Col 1
</div>
<div class="col-xs-pull-12 col-md-12">
Col 2
</div>
</div>
Maintenant que bootstrap a été publié, vous pouvez le faire en utilisant order
classes utilitaires comme vous avez pu le faire en version bêta (voir ancienne mise à jour ci-dessous), à la différence près qu'ils ont ajouté ces 3 nouvelles classes:
.order-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.order-0 {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.p-2 {
background: red;
border: white 5px solid
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<div class="d-flex flex-column">
<div class="p-2">1</div>
<div class="p-2 order-first order-lg-2">2</div>
</div>
Avec la sortie de la version bêta, vous pouvez le faire en utilisant flexbox utilitaires de bootstrap, tels que flex-order
(voir la réponse de @ZimSystem - pour voir la solution avec la version alpha)
.p-2 {
background: red;
border: white 5px solid
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" />
<div class="d-flex flex-column">
<div class="p-2">1</div>
<div class="p-2 order-1 order-lg-2">2</div>
</div>
Mise à jour 2019 - Bootstrap 4.3 +
Maintenant pleine largeur, 12 unités col-*-12
les colonnes peuvent être inversées en utilisant la commande flexbox .
Dans les anciennes versions Bootstrap 4 versions alpha et bêta, les utilitaires de commande étaient flex-*
...
<div class="row">
<div class="col-md-12">
Col 1
</div>
<div class="col-md-12 flex-first flex-md-unordered">
Col 2
</div>
</div>
Depuis Bootstrap 4.0.0 les utilitaires de commande sont order-*
...
<div class="row">
<div class="col-md-12">
Col 1
</div>
<div class="col-md-12 order-first order-md-2">
Col 2
</div>
</div>
Voir les documents sur https://getbootstrap.com/docs/4.0/layout/grid/#order-classes
Une solution consiste à créer deux versions du Col 2 et à en placer une au-dessus du Col 1 et une en dessous. Utilisez ensuite tilitaires réactifs pour masquer et afficher en conséquence.
Vous pouvez utiliser flexbox
, puis vous pouvez utiliser des requêtes multimédias pour modifier l'ordre:
.row {
/* Setup Flexbox */
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
/* Reverse Column Order */
-webkit-flex-flow: column-reverse;
flex-flow: column-reverse;
}
ou (ordre par défaut sur les mobiles et les tablettes, inversé sur le bureau):
@media (min-width: 992px) {
.row {
/* Setup Flexbox */
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
/* Reverse Column Order */
-webkit-flex-flow: column-reverse;
flex-flow: column-reverse;
}
}