我正在制作一个顶部固定导航条的响应式布局。下面有两列,一列是边栏(3),一列是内容(9),在桌面上看起来是这样的
导航条
[3] [9]
当我调整大小移动导航栏被压缩和隐藏,然后边栏堆叠在内容的顶部,就像这样:
navbar
[3]
[9]
我想在顶部的主要内容,所以我需要改变移动的顺序为:
navbar
[9]
[3]
我发现这篇文章涵盖了同样的观点,但公认的答案已被编辑,说解决方案不适用于当前版本的Bootstrap。
如何在移动设备上重新排序这些列?或者,我如何能得到边栏列表组到我的扩展导航栏?
这是我的代码:
<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-->
更新2018
对于基于Bootstrap 3的原始问题,解决方案是使用推拉。
在Bootstrap 4,现在可以改变顺序,即使当列是全宽垂直堆叠,感谢Bootstrap 4 flexbox。OFC中,push - pull方法仍然可以工作,但是现在在Bootstrap 4中有其他方法来改变列的顺序,使全宽列重新排序成为可能。
方法1 -对xs屏幕使用flex-column-reverse:
<div class="row flex-column-reverse flex-md-row">
<div class="col-md-3">
sidebar
</div>
<div class="col-md-9">
main
</div>
</div>
方法2 - xs屏幕使用顺序优先:
<div class="row">
<div class="col-md-3">
sidebar
</div>
<div class="col-md-9 order-first order-md-last">
main
</div>
</div>
引导4(alpha 6): http://www.codeply.com/go/bBMOsvtJhD
引导4.1:https://www.codeply.com/go/e0v77yGtcr
原来的3。x回答
对于基于Bootstrap 3的原始问题,解决方案是对较大的宽度使用push-pull,然后列将显示它们在较小(xs)宽度上的自然顺序。(A-B转B-A)。
<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>
引导3:http://www.codeply.com/go/wgzJXs3gel
@emre说,“你不能在小屏幕上改变列的顺序,但你可以在大屏幕上这样做”。但是,在Bootstrap 3中应该澄清:“您不能更改全宽“堆叠”列的顺序..”。
在Bootstrap 4中,如果你想做这样的事情:
Mobile | Desktop
-----------------------------
A | A
C | B C
B | D
D |
你需要颠倒B和C的顺序,然后应用order-{breakpoint}-first到B,并应用两个不同的设置,一个将使它们共享相同的cols,另一个将使它们采用12个cols的全宽度:
较小的屏幕:12 cols到B和12 cols到C
更大的屏幕:12 cols (B + C = 12)
像这样
<div class='row no-gutters'>
<div class='col-12'>
A
</div>
<div class='col-12'>
<div class='row no-gutters'>
<div class='col-12 col-md-6'>
C
</div>
<div class='col-12 col-md-6 order-md-first'>
B
</div>
</div>
</div>
<div class='col-12'>
D
</div>
</div>
演示:https://codepen.io/anon/pen/wXLGKa
更新2018
对于基于Bootstrap 3的原始问题,解决方案是使用推拉。
在Bootstrap 4,现在可以改变顺序,即使当列是全宽垂直堆叠,感谢Bootstrap 4 flexbox。OFC中,push - pull方法仍然可以工作,但是现在在Bootstrap 4中有其他方法来改变列的顺序,使全宽列重新排序成为可能。
方法1 -对xs屏幕使用flex-column-reverse:
<div class="row flex-column-reverse flex-md-row">
<div class="col-md-3">
sidebar
</div>
<div class="col-md-9">
main
</div>
</div>
方法2 - xs屏幕使用顺序优先:
<div class="row">
<div class="col-md-3">
sidebar
</div>
<div class="col-md-9 order-first order-md-last">
main
</div>
</div>
引导4(alpha 6): http://www.codeply.com/go/bBMOsvtJhD
引导4.1:https://www.codeply.com/go/e0v77yGtcr
原来的3。x回答
对于基于Bootstrap 3的原始问题,解决方案是对较大的宽度使用push-pull,然后列将显示它们在较小(xs)宽度上的自然顺序。(A-B转B-A)。
<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>
引导3:http://www.codeply.com/go/wgzJXs3gel
@emre说,“你不能在小屏幕上改变列的顺序,但你可以在大屏幕上这样做”。但是,在Bootstrap 3中应该澄清:“您不能更改全宽“堆叠”列的顺序..”。
这很容易用jQuery使用insertAfter()或insertBefore():
<div class="left">content</div>
<div class="right">sidebar</div>
< >脚本
$(“铃声”).insertBefore(左);
> < /脚本
如果你想为移动设备设置一个条件,你可以这样做:
< >脚本
var $iW = $(window).innerWidth();
if ($iW < 992){
$(“铃声”).insertBefore(“.left”);
其他}{
$(“铃声”).insertAfter(“.left”);
}
> < /脚本
例子
https://jsfiddle.net/w9n27k23/