Comment puis-je changer de Bootstrap 3 ordre des colonnes mobiles de mise en page?
Je suis en train de faire un réactif de mise en page avec un haut fixe barre de navigation. En dessous j'ai deux colonnes, l'une pour une barre latérale (3), et un pour le contenu (9). Qui sur le bureau ressemble à ça
barre de navigation
[3][9]
Quand je resize
pour mobile le navbar
est compressé et cachés, puis la barre latérale est empilées les unes sur les contenus, comme ceci:
barre de navigation
[3]
[9]
Je voudrais que le contenu principal en haut, donc j'ai besoin de changer l'ordre sur mobile à ceci:
barre de navigation
[9]
[3]
J'ai trouvé cet article qui couvre les mêmes points, mais l'on a accepté la réponse a été édité pour dire que la solution ne s'applique qu'à la version actuelle de Bootstrap.
Comment puis-je réorganiser ces colonnes sur mobile? Ou sinon, comment puis-je obtenir le sidbar liste-groupe dans ma expansion de la barre de navigation?
Voici mon code:
<div class="navbar navbar-inverse navbar-static-top">
<div class="container">
<a href="#" class="navbar-brand">Brand Title</a>
<button class="navbar-toggle" data-toggle="collapse" data-target=".navHeaderCollapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="collapse navbar-collapse navHeaderCollapse">
<ul class="nav navbar-nav navbar-right"><!--original navbar-->
<li class="active"><a href="#">Home</a></li>
<li><a href="#">FAQ</a></li>
</ul>
</div>
</div>
</div><!--End Navbar Div-->
<div class="container">
<div class="row">
<div class="col-lg-3">
<div class="list-group">
<a href="#" class="list-group-item">
<h4 class="list-group-item-heading">Lorem ipsum</h4>
<p class="list-group-item-text">Lorem Ipsum is simply dummy text.</p></a>
</div>
</div><!--end sidebar-->
<div class="col-lg-9">
<div class="panel panel-default">
<div class="panel-body">
<div class="page-header">
Main Content
</div>
</div>
</div><!--end main content area-->
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas modifier l'ordre des colonnes dans les petits écrans, mais vous pouvez le faire dans de grands écrans.
Afin de changer l'ordre de vos colonnes.
Par défaut, il affiche le contenu principal en premier.
Donc dans le mobile principal, le contenu est affiché en premier.
En utilisant
col-lg-push
etcol-lg-pull
nous pouvons réorganiser les colonnes dans de grands écrans et affichage de la barre latérale sur la gauche et le contenu principal sur la droite.De travail violon ici.
positioning cols absolutely
et à de telles!Mis à jour 2018
Pour la original question en se basant sur Bootstrap 3, la solution était de utiliser push-pull.
Dans Bootstrap 4 c'est maintenant possible pour modifier l'ordre, même lorsque les colonnes sont pleine largeur empilés verticalement, grâce à Bootstrap 4 flexbox. L'OFC, le push pull méthode fonctionnera toujours, mais maintenant il y a d'autres façons de changer l'ordre des colonnes dans le Bootstrap 4, ce qui rend possible de commander à nouveau toute la largeur des colonnes.
Méthode 1: Utiliser un
flex-column-reverse
pourxs
écrans:Méthode 2: Utiliser
order-first
pourxs
écrans:Bootstrap 4(alpha 6): http://www.codeply.com/go/bBMOsvtJhD
Bootstrap 4.1: https://www.codeply.com/go/e0v77yGtcr
Original 3.x Réponse
Pour la original question en se basant sur Bootstrap 3, la solution était de utiliser push-pull pour les grandes largeurs, et puis les colonnes s'affichent leur ordre naturel sur les plus petites (xs) largeurs. (A-B l'inverse de B-A).
Bootstrap 3: http://www.codeply.com/go/wgzJXs3gel
@emre a déclaré, "Vous ne pouvez pas modifier l'ordre des colonnes dans les petits écrans, mais vous pouvez le faire dans de grands écrans". Cependant, ceci doit être clarifié à l'etat: "Vous ne pouvez pas changer l'ordre des pleine largeur "empilés" les colonnes.." dans le Bootstrap 3.
Les réponses ici, le travail, juste 2 cellules, mais dès que ces colonnes ont plus en eux, il peut conduire à un peu plus de complexité. Je crois que j'ai trouvé une solution généralisée pour n'importe quel nombre de cellules dans plusieurs colonnes.
Objectifs
Obtenir une séquence verticale de tags sur mobile pour organiser eux-mêmes, dans l'ordre que la conception des appels pour sur tablette/ordinateur de bureau. Dans cet exemple, la balise doit entrer dans le flux plus tôt qu'à l'accoutumée, et un autre plus tard elle le ferait normalement.
Mobile
Tablette+
Donc titre doit shuffle à droite sur la tablette+, et techniquement, donc ne desc - il est assis au-dessus de la légende de la balise qui le précède sur mobile. Vous le verrez dans un instant 4 légende est aussi en difficulté.
Supposons que chaque cellule peut varier en hauteur, et doit être au ras de haut en bas avec sa cellule suivante (excluant la faiblesse des astuces comme une table).
Comme avec tous Bootstrap Grille problèmes de l'étape 1 consiste à réaliser le code HTML doit être dans mobile-commande, 1 2 3 4 5 dans la page. Ensuite, déterminer comment obtenir une tablette/desktop pour réorganiser lui-même de cette façon - idéalement sans Javascript.
La solution pour obtenir
1 headline
et3 qty
de s'asseoir à la droite, pas la gauche est tout simplement de les mettre à la foispull-right
. Cela s'applique CSSfloat: right
, ce qui signifie qu'ils trouvent le premier espace ouvert, ils vont s'adapter à la droite. Vous pouvez penser de la CSS du navigateur processeur de travail dans l'ordre suivant: 1 correspond au coin en haut à droite. 2 est à côté et est régulière (float: left
), donc, il va à l'angle supérieur gauche. Puis 3, qui estfloat: right
de sorte qu'il saute par-dessus les sous 1.Mais cette solution n'est pas assez pour
4 caption
; parce que le droit à 2 cellules sont si courtes2 image
sur la gauche tend à être plus longue que les deux combinés. Bootstrap Grille est une simple flotteur hack, sens4 caption
estfloat: left
. Avec2 image
occupant beaucoup de place sur la gauche,4 caption
tentatives pour s'adapter à l'espace disponible suivant souvent la colonne de droite, pas la gauche où nous le voulions.La solution ici (et plus généralement de tout problème de ce genre) a été d'ajouter un hack tag, caché sur mobile, qui existe sur la tablette+ de pousser la légende, que puis est couverte par une marge négative comme ceci:
http://jsfiddle.net/b9chris/52VtD/16633/
HTML:
CSS:
Ainsi, la généralisation de solution ici est d'ajouter hack tags qui peut disparaître sur mobile. Sur la tablette+ le hack tags permettent affiche les balises apparaissent plus tôt ou plus tard dans le flux, puis obtenir tiré vers le haut ou vers le bas pour couvrir ces hack tags.
Remarque: j'ai utilisé des hauteurs fixes pour le bien de l'exemple simple dans la jsfiddle, mais le contenu du site que je travaillais sur la varie en fonction de la hauteur à tous les 5 balises. Il s'affiche correctement avec relativement importante de la variance dans le tag hauteurs, en particulier de l'image et du desc.
Note 2: en Fonction de votre mise en page, vous pouvez avoir une assez cohérent colonne de commande sur tablette+ (ou plus résolutions), que vous pouvez éviter l'utilisation de hack des balises, à l'aide de
margin-bottom
au lieu de cela, comme ceci:Note 3: il utilise Bootstrap 3. Bootstrap 4 utilise une autre grille de jeu, et ne fonctionne pas avec ces exemples.
http://jsfiddle.net/b9chris/52VtD/16632/
Octobre 2017
Je voudrais ajouter un autre Bootstrap 4 solution. Un qui a fonctionné pour moi.
Le CSS "Ordre" de la propriété, combinée avec une demande de support, peuvent être utilisées pour ré-ordonner les colonnes quand ils se sont empilés dans les petits écrans.
Quelque chose comme ceci:
CodePen Lien: https://codepen.io/preston206/pen/EwrXqm
Ajuster la taille de l'écran et vous verrez les colonnes obtenir empilés dans un ordre différent.
Je vais faire le lien avec l'affiche originale de la question. Avec les CSS, la barre de navigation, barre latérale, et le contenu peuvent être ciblés et puis propriétés d'ordre appliqué à l'intérieur d'une requête de média.
Dans Bootstrap 4, si vous voulez faire quelque chose comme ceci:
Vous avez besoin pour inverser l'ordre de B puis C puis appliquer
order-{breakpoint}-first
à B. Et appliquer deux réglages différents, l'un qui va leur faire partager les mêmes cols et les autres qui vont leur faire prendre toute la largeur de l'12 cols:Les petits écrans: 12 cols à B et 12 cols à C
De plus grands écrans: 12 cols entre la somme de leur (B + C = 12)
Comme ce
Démo: https://codepen.io/anon/pen/wXLGKa
De commencer avec la version mobile d'abord, vous pouvez obtenir ce que vous voulez, la plupart du temps.
Exemples ici:
http://jsbin.com/wulexiq/edit?html,css,sortie
C'est assez facile avec jQuery en utilisant insertAfter() ou insertBefore().
<div class="left">content</div>
<div class="right">sidebar</div>
JS:
Que simple
si vous souhaitez définir o condition pour les appareils mobiles, vous pouvez le faire comme ça
JS:
exemple
https://jsfiddle.net/w9n27k23/