如何重新排列/交换bootstrap中某些流体容器/行的顺序...
如果我们以以下页面上bootstrap的流体示例为例:
http://twitter.github.com/bootstrap/examples/fluid.html
他们在一个流体行的左侧有一个侧边栏,然后是一个英雄单元在同一行。然后在下一行中有一些内容。当我们切换到移动视图/较小的屏幕时,它以相同的顺序显示。但是我们如何更改那个顺序呢? 也就是说,如何将侧边栏显示在最后面,将英雄单元放在页面的顶部?
如何重新排列/交换bootstrap中某些流体容器/行的顺序...
如果我们以以下页面上bootstrap的流体示例为例:
http://twitter.github.com/bootstrap/examples/fluid.html
他们在一个流体行的左侧有一个侧边栏,然后是一个英雄单元在同一行。然后在下一行中有一些内容。当我们切换到移动视图/较小的屏幕时,它以相同的顺序显示。但是我们如何更改那个顺序呢? 也就是说,如何将侧边栏显示在最后面,将英雄单元放在页面的顶部?
Bootstrap v3的新版本现在支持列排序:
列排序
通过 .col-push-* 和 .col-pull-*
修改器类轻松更改内置网格列的顺序。
<div class="row">
<div class="col-md-9 col-md-push-3">9</div>
<div class="col-md-3 col-md-pull-9">3</div>
</div>
将按照以下顺序执行:
----------------------------
| 3 | 9 |
----------------------------
Documentation: http://getbootstrap.com/css/#grid-column-ordering
需要记住的是,默认情况下,网格不支持此功能,但有方法可以解决。
例如,您可以反转两个跨度(设置移动视图的顺序),并通过浮动强制正常定位:
<div class="row-fluid">
<div class="span9 pull-right">
<!-- ... -->
</div><!--/span-->
<div class="span3 pull-left">
<!-- ... -->
</div><!--/span-->
</div><!--/row-->
然后,在较小的屏幕上,.span
元素或多或少被正确地修改,但您仍然需要修复一些规则以解决此行为:
.row-fluid .pull-left[class*="span"]:last-child { margin-left: 0; }
@media (max-width: 767px) {
.row-fluid .pull-right[class*="span"] { float: none; }
}
如果您使用超过两列,则必须反转 .pull-right
元素的边距(除最后一个元素外) - 类似于:
.row-fluid .pull-right[class*="span"] { margin-right: 2.5641%;margin-left: 0; }
.row-fluid .pull-right[class*="span"]:first-child { margin-right: 0; }
实时演示(jsfiddle)和全屏显示(某些样式必须在正常和响应之间设置,因此在样式面板中使用了jsfiddle“hack”)
.pull-right
的元素之间,它应该可以工作。 - Sherbrow.row-fluid
,其中包含主要内容和第二个导航栏。 - Sherbrow#wrapper {
display: flex;
display:-webkit-flex;
flex-direction: column;
-webkit-flex-direction:column;
}
#wrapper > div {
width: 100%;
}
#header {
order: 1;
-webkit-order: 1;
}
#mainMenu {
order: 2;
-webkit-order:2;
}
#content {
order: 3;
-webkit-order:3;
}
#sidebar {
order: 4;
-webkit-order:4;
}
来源:http://www.reddit.com/r/css/comments/1v1gv7/change_order_of_divs_with_css/
$(window).resize(function () {
if ($(window).width() < 480) {
$("#sidebar").insertAfter($("#hero"));
} else {
$("#sidebar").prepend($("#containingrow"));
}
});
你可以使用CSS3提供的媒体查询来实现。
通过媒体查询,你可以创建仅适用于特定屏幕类型的样式。例如,如果你想要制作你所说的那个东西,你可以这样做:
@media only screen and (max-device-width: 480px) {
.sidebar { width: 100%; bottom: 0%; blahblah: something; }
}
如果屏幕宽度小于480像素,那么这种样式只会应用于它。这个解决方案实际上并不依赖于 Bootstrap,而是依赖于 CSS3。
顺便说一句,如果你包含了 Bootstrap.responsive.css(也是 Bootstrap 框架中提供的),那么你的布局将自动变成单列布局,但可能不是你想要的顺序。