ChatGPT解决这个技术问题 Extra ChatGPT

在 Twitter Bootstrap 3 中使用 col-lg-push 和 col-lg-pull 进行列顺序操作

我现在正在阅读有关 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>

此外,文档没有说明 pullpush 的含义。所以我错过了什么吗?

谢谢。

尝试 class="col-lg-5 col-sm-5 col-sm-push-5" 和第二个相同的拉
可以在标题为“推拉 - 更改列顺序“:w3schools.com/bootstrap/bootstrap_grid_examples.asp

1
19 revs, 2 users 98%

这个答案分为三部分,官方发布见下文(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 应该反映您网站的移动版本。然后在较大的屏幕上完成推拉。

(桌面)更大的视口被推拉。

(移动)较小的视口以正常顺序呈现。

DEMO

<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) 也可用

第一个还是第二个
第二个还是第一个


谢谢。将我的可导入脚本更改为我从 github 存储库克隆的脚本,然后它按预期工作。如您所说,最初的脚本不包括 col-lg-push。非常感谢。
谢谢,大于让我发现了,因为我假设它会小于。但我想移动优先开发,这是有道理的。
我认为第二个选项“<=sm”应该只是“<”,因为它们不能都有“=”
翻转列的顺序(移动优先),这就是诀窍!谢谢!
在 Bootstrap v4 中,它们现在被命名为 {push/pull}-{vp}-{1-12},例如 push-md-4
D
DrGeneral

将 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/

希望能帮助到你


推拉不要“分配边距”。他们改变列的顺序。在您的示例中,“内容”列通常会占用较大的 1-4 列,而“侧边栏”列将占用 5-8 列。这是基于它们在标记中的顺序。您可以通过在标记中更改它们来更改它们的顺序,但是如果出于任何原因您不想这样做(例如,首先使代码对主要内容更具语义),那么您可以使用 push 和 pull 类来更改它们的顺序。
(续)在您的示例中,添加 col-lg-push-4 通过“推送”4 列将 Content 列从第 1-4 列更改为 5-8。同样,col-lg-pull-4Sidebar 列从 5-8“拉”到 1-4。
col-$$-offset-XX 应用 margin-left 值
S
Syed Ali

误解 对列排序的常见误解是,我应该(或可以)在移动设备上进行推拉,并且桌面视图应该以标记的自然顺序呈现。这是错误的。

Reality Bootstrap 是一个移动优先的框架。这意味着您的 HTML 标记中列的顺序应该代表您希望它们在移动设备上显示的顺序。这意味着推和拉是在较大的桌面视图上完成的。不在移动设备上查看..

Brandon Schmalz - 全栈 Web 开发人员在这里查看完整描述


K
Kuba

我只是觉得我会在这 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


J
Jpsy

如果您需要根据视口大小以 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

解决方案

在周围的两列父元素中使用嵌套的两列子元素:

这是一个工作片段: