我现在正在阅读有关 Twitter Bootstrap 3 的文档,并尝试按照 this page 中所示的列顺序进行操作,但碰壁了。我不明白为什么这样的代码有效,也不明白如何正确指定设置。我要展示的是一个网格,它由长度为 5 的网格组成,另一个长度为 5,最后是一个长度为 2 的网格。
所以我的是这样的:
[5] [5] [2]
我想要实现的是,当它在桌面上查看时,会显示上面的布局,但是当它在移动设备上查看时,我想先显示第二个长度为 5 的对象,然后是第一个长度为 5 的对象,最后是长度为 2 的对象, 垂直。像这样:
[5] (second)
[5] (first)
[2]
当我尝试按照上述文档中解释的步骤进行操作时,尽管在移动平台上,我还是得到了第一个长度为 5 的对象而不是第二个对象,正如我所说的那样,它应该在顶部显示第二个长度为 5 的对象。换句话说,我得到了这个:
[5] (first)
[5] (second)
[2]
那么我怎样才能正确地将第二个放在第一个上呢?或者因为我使用相同的长度对象,列排序不能工作吗?
这是我的代码供您参考:
<div class='row'>
<div class='col-lg-5 col-lg-push-5'></div>
<div class='col-lg-5 col-lg-pull-5'></div>
<div class='col-lg-2'></div>
</div>
此外,文档没有说明 pull
或 push
的含义。所以我错过了什么吗?
谢谢。
这个答案分为三部分,官方发布见下文(v3和v4)
我什至在我下载的 RC1 的原始文件中找不到 col-lg-push-x 或 pull 类,因此请检查您的 bootstrap.css 文件。希望这是他们将在 RC2 中解决的问题。
无论如何, col-push-* 和 pull 类确实存在,这将满足您的需求。 Here is a demo
<div class="row">
<div class="col-sm-5 col-push-5">
Content B
</div>
<div class="col-sm-5 col-pull-5">
Content A
</div>
<div class="col-sm-2">
Content C
</div>
</div>
编辑:以下是官方版本 v3.0 的答案
另见This blog post on the subject
col-vp-push-x = 将列向右推 x 列,从列通常呈现的位置开始 -> 位置:相对,在 vp 或更大的视口上。
col-vp-pull-x = 将列向左拉 x 列,从列通常呈现的位置开始 -> 位置:相对,在 vp 或更大的视口上。 vp = xs、sm、md 或 lg x = 1 到 12
我认为让大多数人感到困惑的是,您需要更改 HTML 标记中列的顺序(在下面的示例中,B 在 A 之前),并且它只执行推送或拉取大于或等于指定的视口。即 col-sm-push-5
只会在 sm
或更大的视口上推送 5 列。这是因为 Bootstrap 是一个“移动优先”的框架,因此您的 HTML 应该反映您网站的移动版本。然后在较大的屏幕上完成推拉。
(桌面)更大的视口被推拉。
(移动)较小的视口以正常顺序呈现。
<div class="row">
<div class="col-sm-5 col-sm-push-5">
Content B
</div>
<div class="col-sm-5 col-sm-pull-5">
Content A
</div>
<div class="col-sm-2">
Content C
</div>
</div>
视口 >= sm
|A|B|C|
视口 < sm
|B|
|A|
|C|
编辑:以下是 v4.0 的答案
v4 带来了 flexbox 和对网格系统的其他更改,并且 push\pull 类已被删除,以支持使用 flexbox 排序。
使用 .order-* 类来控制视觉顺序(其中 * = 1 到 12)
这也可以是特定于网格层的 .order-md-*
.order-first (-1) 和 .order-last (13) 也可用
将 div “拉”向浏览器的左侧,然后将 div 从浏览器的左侧“推”开。
https://i.stack.imgur.com/jmKbf.jpg
所以基本上在任何网页的 3 列布局中,“主体”出现在“中心”,而在“移动”视图中,“主体”出现在页面的“顶部”。这是每个拥有 3 列布局的人最想要的。
<div class="container">
<div class="row">
<div id="content" class="col-lg-4 col-lg-push-4 col-sm-12">
<h2>This is Content</h2>
<p>orem Ipsum ...</p>
</div>
<div id="sidebar-left" class="col-lg-4 col-sm-6 col-lg-pull-4">
<h2>This is Left Sidebar</h2>
<p>orem Ipsum...</p>
</div>
<div id="sidebar-right" class="col-lg-4 col-sm-6">
<h2>This is Right Sidebar</h2>
<p>orem Ipsum.... </p>
</div>
</div>
</div>
您可以在此处查看:http://jsfiddle.net/DrGeneral/BxaNN/1/
希望能帮助到你
col-lg-push-4
通过“推送”4 列将 Content 列从第 1-4 列更改为 5-8。同样,col-lg-pull-4
将 Sidebar 列从 5-8“拉”到 1-4。
误解 对列排序的常见误解是,我应该(或可以)在移动设备上进行推拉,并且桌面视图应该以标记的自然顺序呈现。这是错误的。
Reality Bootstrap 是一个移动优先的框架。这意味着您的 HTML 标记中列的顺序应该代表您希望它们在移动设备上显示的顺序。这意味着推和拉是在较大的桌面视图上完成的。不在移动设备上查看..
Brandon Schmalz - 全栈 Web 开发人员在这里查看完整描述
我只是觉得我会在这 2 个好的答案中加上我的 0.2 美元。我有一个案例,在 3 列的情况下,我必须将最后一列一直移动到顶部。
[A][B][C]
至
[C]
[一个]
[乙]
Boostrap 的类 .col-xx-push-X
仅使用 left: XX%;
将一列向右推,因此将一列向右推所需要做的就是添加向左的伪列数。
在这种情况下:
两列(col-md-5 和 col-md-3)向左,每一列的值是向右的;
one(col-md-4) 向右移动,前两个向左移动 (5+3=8);
<div class="row">
<div class="col-md-4 col-md-push-8 ">
C
</div>
<div class="col-md-5 col-md-pull-4">
A
</div>
<div class="col-md-3 col-md-pull-4">
B
</div>
</div>
https://i.stack.imgur.com/tQmEq.png
如果您需要根据视口大小以 1 / 2 / 4 列的形式组织数据,那么推送和拉动可能根本就不是选项。无论您首先如何订购商品,其中一种尺寸都可能给您错误的订单。
在这种情况下,一种解决方案是使用嵌套的行和列,而无需任何推入或拉出类。
例子
在 XS 中你想要...
A
B
C
D
E
F
G
H
在 SM 你想要...
A E
B F
C G
D H
在MD及以上你想要...
A C E G
B D F H
解决方案
在周围的两列父元素中使用嵌套的两列子元素:
这是一个工作片段:
col-lg-push
。非常感谢。