了解 Bootstrap 3 中的网格类( col-sm-# 和 col-lg-# )

Posted

技术标签:

【中文标题】了解 Bootstrap 3 中的网格类( col-sm-# 和 col-lg-# )【英文标题】:Understanding the grid classes ( col-sm-# and col-lg-# ) in Bootstrap 3 【发布时间】:2013-08-11 09:22:40 【问题描述】:

我开始使用 Bootstrap 3,但在理解如何使用网格类时遇到了一些麻烦。

到目前为止,这是我想出的:

似乎col-sm-#col-lg-# 类与普通的旧col-# 不同,它们仅适用于屏幕大于特定尺寸(分别为768px 和992px)时。如果省略 -sm- 或 -lg-,则 div 将永远不会折叠成一列。

但是,当我在一行中创建两个 div 时,它们都是 col-sm-6,当窗口宽度在 768px 和 992px 之间时,它们似乎并排。换句话说,如果我把窗口一直缩小然后慢慢加宽,布局是单列,然后是两列,然后回到单列再次

    这是预期的行为吗? 如果我想要两列用于超过 768 像素的任何内容,我应该应用 both 类吗? (<div class="col-sm-6 col-lg-6">) 是否应该包括col-6 <div class="col-6 col-sm-6 col-lg-6">

【问题讨论】:

阅读表格:getbootstrap.com/css/#grid #1 - 这是预期的行为,因为使用 @media 表示特定尺寸。 #2 和 #3 是的,请阅读“示例:将移动设备与桌面设备相结合”和“示例:移动设备、平板电脑和桌面设备” @RaphaelDDL 谢谢。我在发帖后不久就想通了。我想我希望 v3 的行为类似于 v2 的“bootstrap-responsive.css”,但事实并非如此。 另见:***.com/questions/17919225/… 【参考方案1】:

[以下更新]

我又看了一下文档,似乎我忽略了一个专门讨论这个的部分。

我的问题的答案:

    是的,它们仅适用于特定范围,而不是超过特定宽度的所有内容。

    是的,这些类是要合并的。

    似乎这在某些情况下是合适的,但在其他情况下则不合适,因为 col-# 类基本上等同于 col-xsm-# 或 0px 以上的宽度(所有宽度)。

除了太快地阅读文档之外,我想我很困惑,因为我带着“Bootstrap 2 的心态”进入了 Bootstrap 3。具体来说,我在 v2 中使用(可选)响应式样式(bootstrap-responsive.css),而 v3 则完全不同(为了更好的 IMO)。

更新稳定版本:

这个问题最初是在RC1出来的时候写的。他们对 RC2 进行了一些重大更改,因此对于现在阅读本文的任何人来说,并非上述所有内容仍然适用。

截至我目前正在写这篇文章时,col-*-# 类似乎确实适用于向上。因此,例如,如果您希望手机的元素为 12 列(全宽),而平板电脑及以上的元素为 2 列 6 列(半页),您可以执行以下操作:

<div class="col-xs-12 col-sm-6"> ... //NO NEED FOR col-md-6 or col-lg-6

(在写完这个问题后,他们还添加了一个额外的 xs 断点。)

【讨论】:

超链接似乎指向当前不存在的页面。我不确定是否应该将其更新为指向上面提供的@RaphaelDDL 的链接——getbootstrap.com/css/#grid——还是指向其他链接? 感谢您的提问和回答。我不是 css 人,起初网格设置也让我感到困惑。但如果你说的是真的,最好只使用 xs 并让一切向上应用。【参考方案2】:

Here 你有一个很好的教程,解释了如何在 Bootstrap 3 中使用新的网格类。

它还涵盖了 mixins 等。

【讨论】:

博客链接详细描述了 Bootstrap 3 的网格,包括 4 个大小调整类,例如 col-xs-*。有很好的代码示例。 很好,尤其是他不断鼓励你坚持的作风; “有用吗?不?不知道?让我们继续吧!” 还用恰当的句子解释事情:“这基本上是说“让我一直保持 6 列宽到手机尺寸,永远不要把我切换到堆叠的移动布局。””。感谢发帖【参考方案3】:

“如果我想要两列用于超过 768 像素的任何内容,我应该同时应用这两个类吗?”

这应该很简单:

<div class="row">
      <div class="col-sm-6"></div>
      <div class="col-sm-6"></div>    
</div>

也不需要添加col-lg-6

演示:http://www.bootply.com/73119

【讨论】:

由于我还无法解释的原因,它对我来说不起作用。 .col-sm-6 似乎只适用于特定的宽度范围(并非以上所有内容)【参考方案4】:

最好的理解方式是从上到下简单地思考(大型台式机到手机)

首先,由于 B3 首先是移动设备,因此如果您使用 xs,那么从大型桌面到 xs 的列将是相同的(我建议使用 xs 或 sm,因为这样可以在每个屏幕尺寸上保持您想要的所有内容)

其次,如果您想在不同的设备或分辨率上为列赋予不同的宽度,则可以添加多个类,例如

上面会根据屏幕分辨率改变宽度,记住我保持每个 class= 12 的总列数

希望我的回答对你有帮助!

【讨论】:

【参考方案5】:

要修改上面 SDP 的答案,您不需要在 &lt;div class="col-xs-12 col-sm-6"&gt; 中声明col-xs-12。 Bootstrap 3 是移动优先的,因此默认情况下,每个 div 列都假定为 100% 宽度的 div - 这意味着在“xs”大小下它是 100% 宽度,无论您设置什么,它都将始终默认为该行为sm, md, lg。如果您希望您的 xs 列不是 100%,那么您通常执行 col-xs-(1-11)

【讨论】:

【参考方案6】:

这可能会迟到,因为我认为我们大多数人都在使用 BS4。本文详细而简单地解释了您提出的所有问题,还包括何时做什么。使用bs4或bootstrap的详细指南

https://uxplanet.org/how-the-bootstrap-4-grid-works-a1b04703a3b7

【讨论】:

考虑将链接中的相关信息放在为答案提供的空间中。 我包含该链接的唯一原因是它对我从顶部开始阅读文章很有帮助。这时候才有意义。

以上是关于了解 Bootstrap 3 中的网格类( col-sm-# 和 col-lg-# )的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 4网格不尊重列方向的col-*

Bootstrap 3 - col-md-4 到 col-sm-6,或 3x2 到 2 x 3 的网格

Bootstrap 3网格列的高度相同

bootstrap3中的col-lg和col-md有啥区别

bootstrap中常用的元素类名详解

划分 Bootstrap 网格列的最佳方法