J'utilise une disposition fluide à 2 colonnes dans Twitter Bootstrap. La colonne de gauche est le contenu principal (span10) et la colonne de droite est une barre latérale pour les widgets (span2). Actuellement, lors du redimensionnement de la fenêtre du navigateur, Bootstrap répond en créant une colonne avec la section la plus à gauche en haut et la plus à droite en bas. J'aimerais que ce soit l'inverse.
Voici le résumé de mon code HTML:
<body>
<div id="content" class="container-fluid">
<div id="content-row-1" class="row-fluid">
<div id="mainContainer" class="span10"> Lots of content goes here </div>
<div id="sidebar" class="span2"> Widgets </div>
</div> <!-- content-row-1 -->
</div> <!-- content -->
</body>
Existe-t-il un moyen d'avoir mainContainer
à gauche et les widgets à droite dans une fenêtre large, mais accrocher sidebar
en haut lorsque la fenêtre est réduite?
Répondant à une question très similaire à celle d’aujourd’hui, vous pouvez le voir ici , il s’agissait essentiellement de déplacer le flot de la barre latérale en le faisant flotter vers la droite et en compensant la marge de gauche puis réinitialiser l'attribut float de la barre latérale avec une requête @media
pour l'adapter à nouveau à la barre latérale avec sa valeur par défaut à partir de la feuille de style d'amorçage.
CSS
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
#sidebar {
float:right;
}
#content {
margin-left: 0;
}
@media (max-width: 767px) {
#sidebar {
float:none;
}
}
Voici une démo retravaillée de la question précédente: violon , éditez ici .
Dans bootstrap 3, cette opération est effectuée avec l'ordre des colonnes de la grille ( Voir la documentation de Bootstrap 3 )
Exemple
<div class="row">
<div class="col-md-9 col-md-Push-3">.col-md-9 .col-md-Push-3</div>
<div class="col-md-3 col-md-pull-9">.col-md-3 .col-md-pull-9</div>
</div>
Cela montrera le div
supérieur derrière le div
inférieur s'il y a assez d'espace. Si la taille de l'écran est réduite, la valeur div
supérieure reste active.
Je viens après que la question soit résolue avec un très moyen simple pour y parvenir. Pas besoin de @media ni de pourcentage:
En conséquence, vous aurez votre barre latérale à droite pour le bureau et au-dessus pour les mobiles.
Exemple:
--- HTML
<div id="content" class="container-fluid">
<div id="content-row-1" class="row-fluid">
<div id="sidebar" class="span2 pull-right"> Widgets </div>
<div id="mainContainer" class="span10 pull-left"> Lots of content goes here </div>
</div> <!-- content-row-1 -->
</div> <!-- content -->
--- CSS
div#sidebar, div#mainContainer {
margin-left: 0;
}
En fonction de vos paramètres, il suffit d'inverser les div sidebar
et mainContainer
dans l'ordre source html et float: right
chacun d'eux. Quelque chose comme: http://jsfiddle.net/3g8Bt/ .
Je suis venu avec une solution super simple qui semble fonctionner avec au moins une disposition de 2 colonnes. Créez simplement une nouvelle classe pour votre balisage et quelques CSS simples.
<div class="row-fluid">
<div class="span9 pull-right re-order">
<?php print $content['content']; ?>
</div>
<div class="span3 re-order">
<?php print $content['sidebar']; ?>
</div>
</div>
.row-fluid .re-order {
margin: 0;
}
.row-fluid [class*="span"]:last-child {
margin-right: 2.7624309392265194%;
margin-left: 0;
}
Cela pourrait probablement être affiné un peu plus mais cela fonctionne.
La réponse acceptée fonctionne très bien. Alternativement, parfois, les choses sont compliquées quand vous avez plusieurs morceaux de HTML qui doivent apparaître aux positions anti-bootstrap. Il est également possible de le résoudre en créant des copies HTML dupliquées et en utilisant .visible-phone et .hidden-phone pour contrôler leur affichage/masquage.
<div class="row-fluid">
<div class="span12 visible-phone">
<ul>
<li><a href="">tab1</a></li>
<li><a href="">tab2</a></li>
<li><a href="">tab3</a></li>
<li><a href="">tab4</a></li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span9">
<p>
Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
</p>
</div>
<div class="span3 hidden-phone">
<ul>
<li><a href="">tab1</a></li>
<li><a href="">tab2</a></li>
<li><a href="">tab3</a></li>
<li><a href="">tab4</a></li>
</ul>
</div>
</div>