【问题标题】:Reordering divs responsively with Twitter Bootstrap?使用 Twitter Bootstrap 响应式地重新排序 div?
【发布时间】:2013-09-02 02:55:10
【问题描述】:

我正在使用Twitter Bootstrap v3 并希望使用column orderingoffsetting 响应地重新排序元素。

这就是我想要使用我的元素的方式。在 -xs-sm 断点处,包含 div 堆叠 4 到一行:

-md-lg 断点处,包含 div 堆叠 2 到一行:

这是当前代码 - 我知道如何在包含的 div 上设置类,但不知道在 A、B 和 C 上:

  <div class="row">
    <div class="containing col-xs-6 col-sm-6 col-md-3 col-lg-3">
      <div class="row">
       <div class="a col-xs-12 col-sm-12 col-md-6 col-lg-6">Content of A</div>
       <div class="b col-xs-12 col-sm-12 col-md-6 col-lg-6">Content of B</div>
       <div class="c col-xs-12 col-sm-12 col-md-6 col-lg-6">Content of C</div>
      </div>
    </div>
    ... more containing divs...
  </div>

我不知道如何使用 Bootstrap 3 的 column orderingoffsetting 以正确的顺序获得 A、B 和 C。真的有可能吗?

这是我使用 JSFiddle 所获得的:http://jsfiddle.net/3vYgR/

【问题讨论】:

  • “4/2 堆叠成一行”是什么意思?你的意思是第一个版本是4个单位高,第二个是2个单位?或者你的意思是第一个版本可以在水平线上有 4 个 a-b-c 组,第二个可以有 2 个?

标签: css twitter-bootstrap responsive-design twitter-bootstrap-3


【解决方案1】:

Bootstrap 4Bootstrap 5 的用户会希望看到这个问题: Bootstrap change order of columns


Bootstrap 3(原始答案)

我想你想看看 pushpull 类...

<div class="row">
   <div class="a col-xs-12 col-sm-12 col-md-6 col-lg-6 col-lg-push-6 col-md-push-6">Content of A</div>
   <div class="b col-xs-12 col-sm-12 col-md-6 col-lg-6 col-lg-pull-6 col-md-pull-6">Content of B</div>
   <div class="c col-xs-12 col-sm-12 col-md-6 col-lg-6 col-lg-push-6 col-md-push-6">Content of C</div>
</div>

演示:http://bootply.com/77853

【讨论】:

  • 这正是我想要的,谢谢!对于任何阅读这里的人来说,都是推/拉文档的链接:getbootstrap.com/css/#grid-column-ordering 虽然我仍然不完全理解推拉的确切作用......
  • 您只需要新的网格类,例如从 12 列变为 6 列。不需要 col-sm-* 或 col-lg-* 类,因为它们分别继承了 xs 和 md。
  • 不要忘记,如果您的元素开始出现在意外位置,您可能还需要使用“clearfix”。
  • 这个例子也给出了我的回答中列出的 [C] 的垂直对齐问题。
【解决方案2】:

@skelly 提供的答案是一个很好的起点,但确实会导致一些垂直对齐问题。假设 A 是一个 tall div,那么 C 在 A 下方垂直对齐:

[A] [B]
[ ]
    [C]

此外,如果您想更进一步,您可能还需要考虑使用clearfix 块。例如;

<!-- Add clearfix for only the required viewport(s) -->
<div class="clearfix visible-md-block visible-lg-block"></div>

如果没有 clearfix mdlg 可能会变成:

[A] [B]
    [C] [D]

如果您希望最终“列”中的元素超过 2 个,或者元素的高度开始使其他元素失去对齐,这一点尤其重要。

使用clearfix mdlg 将是:

[A] [B]
    [C]
    [D]

小提琴示例:http://jsfiddle.net/L5174o8d/

【讨论】:

  • 有没有办法解决垂直对齐问题?我想要的是相反的,但我有同样的对齐问题。例如:jsfiddle.net/bqop535n
  • 如果我对您的理解正确,那么您应该删除 clearfix 和 push/pulls,例如:jsfiddle.net/qkaL02z8
【解决方案3】:

我尝试了 Skelly 的回答中所示的推/拉,但一旦应用了高度,C 就会在新行中结束:http://www.bootply.com/Q3djHYawgb#

如果 B 可以在以小尺寸显示时首先显示,那么我认为在右侧列中创建一行来包含 A 和 C 更有意义:

<div class="containing row">
    <div class="b col-xs-12 col-md-6">Content of B</div>
    <div class="ac col-xs-12 col-md-6">
        <div class="row">
            <div class="a col-xs-12">Content of A</div>
        </div>
        <div class="row">
            <div class="c col-xs-12">Content of C</div>
        </div>
    </div>
</div>

http://jsfiddle.net/hoodoo99/L2BE9/

【讨论】:

  • 当 XS 启动时,您的示例将 A 置于 B 之下。
【解决方案4】:

任何不使用更传统方法的理由,即。 B 向左浮动,其他元素向右浮动?

就像你把它添加到你的 jsfiddle 中的当前 CSS 中一样:

.b {
    float: left;
    width: 50%;
    height: 100px;
}
.a, .c {
    float: right;
    width: 50%;   
    height: 50px;
}

http://jsfiddle.net/E6BFk/

我不确定 Bootstrap 的列排序是否可以实现堆叠效果,也许只有重新排序......尽管关于该功能的文档非常少。

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多