¿Cómo cambio el orden de las columnas Bootstrap 3 en el diseño móvil?
Estoy creando un diseño responsivo con una barra de navegación fija en la parte superior. Debajo tengo dos columnas, una para la barra lateral (3) y otra para el contenido (9). Que en el escritorio se ve así
barra de navegación
[3][9]
Cuando uso resize
un dispositivo móvil, navbar
la barra lateral está comprimida y oculta, luego se apila encima del contenido, así:
barra de navegación
[3]
[9]
Me gustaría que el contenido principal estuviera en la parte superior, así que necesito cambiar el orden en el móvil a este:
barra de navegación
[9]
[3]
Encontré este artículo que cubre los mismos puntos, pero la respuesta aceptada se editó para decir que la solución no se aplica a la versión actual de Bootstrap.
¿Cómo puedo reordenar estas columnas en el móvil? O alternativamente, ¿cómo puedo incluir el grupo de listas de la barra sid en mi barra de navegación en expansión?
Aquí está mi código:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<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-->
No puede cambiar el orden de las columnas en pantallas más pequeñas, pero puede hacerlo en pantallas grandes.
Así que cambia el orden de tus columnas.
<!--Main Content-->
<div class="col-lg-9 col-lg-push-3">
</div>
<!--Sidebar-->
<div class="col-lg-3 col-lg-pull-9">
</div>
De forma predeterminada, esto muestra primero el contenido principal.
Entonces, en dispositivos móviles, el contenido principal se muestra primero.
Al usar col-lg-push
y col-lg-pull
podemos reordenar las columnas en pantallas grandes y mostrar la barra lateral a la izquierda y el contenido principal a la derecha.
Trabajando el violín aquí .
Actualizado 2018
Para la pregunta original basada en Bootstrap 3 , la solución fue usar push-pull .
En Bootstrap 4 ahora es posible cambiar el orden, incluso cuando las columnas están apiladas verticalmente en todo su ancho, gracias a Bootstrap 4 flexbox. OFC, el método push-pull seguirá funcionando, pero ahora hay otras formas de cambiar el orden de las columnas en Bootstrap 4, lo que permite reordenar columnas de ancho completo.
Método 1: uso flex-column-reverse
para xs
pantallas:
<div class="row flex-column-reverse flex-md-row">
<div class="col-md-3">
sidebar
</div>
<div class="col-md-9">
main
</div>
</div>
Método 2: uso order-first
para xs
pantallas:
<div class="row">
<div class="col-md-3">
sidebar
</div>
<div class="col-md-9 order-first order-md-last">
main
</div>
</div>
Bootstrap 4 (alfa 6): http://www.codeply.com/go/bBMOsvtJhD
Bootstrap 4.1: https://www.codeply.com/go/e0v77yGtcr
Respuesta original 3.x
Para la pregunta original basada en Bootstrap 3 , la solución fue usar push-pull para los anchos más grandes, y luego las columnas mostrarán su orden natural en anchos más pequeños (xs). (AB al revés a BA).
<div class="container">
<div class="row">
<div class="col-md-9 col-md-push-3">
main
</div>
<div class="col-md-3 col-md-pull-9">
sidebar
</div>
</div>
</div>
Arranque 3: http://www.codeply.com/go/wgzJXs3gel
@emre declaró: " No puedes cambiar el orden de las columnas en pantallas más pequeñas, pero puedes hacerlo en pantallas grandes ". Sin embargo, esto debe aclararse para decir: "No se puede cambiar el orden de las columnas" apiladas " de ancho completo ..." en Bootstrap 3.