【问题标题】:bootstrap 3: column re-order on breakpoint引导程序 3:在断点处重新排序列
【发布时间】:2017-02-19 14:02:05
【问题描述】:

你好,我在 Bootstrap 3 中做一个列排序接口,我遇到了这个问题。

我有两列:

LG:A 列 B 列

MD:A 列
B栏

但我需要这个:

LG:A 列 B 列

MD:B 列
A栏

如何在 MD 分辨率上重新排序 div?我正在尝试拉和推,但没有运气:(

提前谢谢...

这是我的代码:

<div class="col-xs-12 col-md-12 col-lg-12">
<div class="row">
    <div class="col-xs-12 col-md-12 col-lg-push-0 col-lg-9">
        ColumnA
    </div>

    <div class="col-xs-12 col-md-12 col-lg-pull-0 col-lg-3">
        ColumnB
    </div>
</div>

【问题讨论】:

  • 您的代码似乎不完整 - &lt;div class="col-xs-12 col-md-12 col-lg-12"&gt; 未关闭。另外,如果可能的话,请在JSFiddle 上给我们一个例子

标签: twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

Bootstrap 3 使用 mobile-first 方法,这意味着首先为较小的屏幕修复网格等内容,然后继续为桌面应用样式。

如果可以语义和 SEO 方面(IMO 相同)更改标记以反映您在 Extra Small 中的列所需的顺序,小型中型设备,然后然后应用col-lg-push-*col-lg-pull-*大型设备重新排序您的列。

这是您的案例的代码:

<div class="row">
    <div class="col-lg-9 col-lg-push-3">
        ColumnB
    </div>
    <div class="col-lg-3 col-lg-pull-9">
        ColumnA
    </div>
</div>


如果更改标记在语义上没有意义,恐怕col-*-push-*col-*-pull-* 将无济于事,并且可能会出现一些黑客攻击......

【讨论】:

  • “移动优先”部分确实帮助我最终理解了“推”和“拉”风格。我从基于桌面视图订购的 DIV 开始,然后尝试为移动视图重新订购。一旦我反其道而行之,一切就都说得通了。
  • 这种“移动优先”的方法确实是 CSS 的一个限制。 Flexbox 规范解决了这个限制(最终得到所有主要浏览器的良好支持)。演示应该与 html 文档的结构分离,所以我建议的移动优先结构应该只是暂时的不便。在某些时候,Bootstrap 和类似的框架或网格可以让我们按照我们想要/需要的方式构建页面,并且仍然能够使用媒体查询来移动列或框...
【解决方案2】:

我有一个建议,但可能不是完美的解决方案,但如果您只需要重新排列这两列,则可以使用它:

  1. 从您的代码中删除您使用的 ( push )( pull )
  2. 在原始代码下制作另一个代码副本。
  3. 现在重要的是使用 Bootstrap 提供的Responsive utilities
  4. 您需要做的就是使用这两个类 ( .visible-xx )( .hidden-xx )(xx : xs, sm, md, lg).
  5. 将它们与您的原始代码一起使用将使您希望的列以您需要的分辨率可见或隐藏。

例如:

 LG: ColumnA -- .visible-xx or .hidden-xx  ( at the needed resolution )
     ColumnB -- .visible-xx or .hidden-xx  ( at the needed resolution )

那么使用这两个类所需的代码也可以是这样的:

MD: ColumnB  -- .visible-xx or .hidden-xx  ( at the needed resolution )
    ColumnA  -- .visible-xx or .hidden-xx  ( at the needed resolution )

** 记得不要忘记更改代码在副本中的顺序,例如:

<div class="row">
   <div class="">
      ColumnB
   </div>

   <div class="">
      ColumnA
   </div>

重要提示:

最好尽可能使用修饰符类 .col-md-push-*.col-md-pull-*,请参阅 Bootstrap 文档中的 column ordering section,如果它不起作用,您可以使用其他方式。

所以你可以先试试这个:

<div class="row">
    <div class="col-lg-9 col-lg-push-3">
        Column B will be here
    </div>
    <div class="col-lg-3 col-lg-pull-9">
        Column A will be here
    </div>
</div>

希望这会对你有所帮助。

【讨论】:

  • 听起来这表明您的页面上应该有重复的内容。即使该内容被隐藏,它仍会被 Google 索引。如果此页面不打算用作可抓取页面,则此解决方案有效(虽然草率),但它不是处理此问题的正确方法。 Asotos 的回答是关于如何在纯 CSS/Bootstrap 解决方案中处理此问题的正确解决方案。
  • 使用 push-pull 代替 @Asotos answer 中的额外标记
猜你喜欢
  • 2014-03-31
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 2019-05-05
相关资源
最近更新 更多