Bootstrap 4 的 网格系统(Grid System) 是一个非常强大的工具,用于实现响应式布局。它基于 12列 的栅格系统,允许你通过不同的列宽来创建灵活的布局。网格系统的核心是使用 .container.container-fluid 容器,配合 .row.col-* 类来控制布局。

1. 网格系统的基本结构

Bootstrap 4 的网格系统是基于 12 列的。每个 .col-* 元素(列)可以占据不同数量的列,且可以响应式调整。

<div class="container">
  <div class="row">
    <div class="col-md-4">Column 1</div>
    <div class="col-md-4">Column 2</div>
    <div class="col-md-4">Column 3</div>
  </div>
</div>

在上面的代码中:

  • .container 是一个固定宽度的容器,适用于大多数网站布局。
  • .row 用于包含所有列元素。
  • .col-md-4 定义了每个列占据 12 列中的 4 列宽度,因此每行总共有 3 列。

2. 列的宽度

Bootstrap 4 允许你为每个列指定不同的宽度。默认情况下,栅格系统是 12列,你可以通过设置每列的 col-* 类来控制每个列的宽度。

示例:

<div class="row">
  <div class="col-12 col-sm-6 col-md-4 col-lg-3">Column 1</div>
  <div class="col-12 col-sm-6 col-md-4 col-lg-3">Column 2</div>
  <div class="col-12 col-sm-6 col-md-4 col-lg-3">Column 3</div>
  <div class="col-12 col-sm-6 col-md-4 col-lg-3">Column 4</div>
</div>

在这个例子中:

  • col-12 表示当屏幕小于 576px 时,每列占满一整行。
  • col-sm-6 表示当屏幕宽度大于或等于 576px 时,每列占据 6 列宽度(即两列一行)。
  • col-md-4 表示当屏幕宽度大于或等于 768px 时,每列占 4 列宽度(即三列一行)。
  • col-lg-3 表示当屏幕宽度大于或等于 992px 时,每列占 3 列宽度(即四列一行)。

3. 自定义列的宽度

你也可以为每个列设置不同的宽度,完全自定义它们占据的列数。

示例:

<div class="row">
  <div class="col-4">Column 1</div>  <!-- 占 4 列 -->
  <div class="col-8">Column 2</div>  <!-- 占 8 列 -->
</div>

在这个例子中,第一列占了 4 列,第二列占了 8 列。12 列加起来正好是 12。

4. 响应式设计

Bootstrap 4 的网格系统是 响应式 的,意味着你可以根据不同的屏幕大小来调整列的布局。通过使用不同的列类(如 col-sm-*, col-md-*, col-lg-*, col-xl-*),你可以为不同的设备指定不同的列宽。

响应式类:

  • col-:适用于超小屏幕(小于 576px)。
  • col-sm-:适用于小屏幕(>= 576px)。
  • col-md-:适用于中等屏幕(>= 768px)。
  • col-lg-:适用于大屏幕(>= 992px)。
  • col-xl-:适用于超大屏幕(>= 1200px)。

例如,如果你想在手机、平板和桌面设备上使用不同的布局,可以这样设置:

<div class="row">
  <div class="col-12 col-md-6 col-lg-4">Column 1</div>  <!-- 手机占满全宽,平板占 6 列,桌面占 4 列 -->
  <div class="col-12 col-md-6 col-lg-4">Column 2</div>
  <div class="col-12 col-md-6 col-lg-4">Column 3</div>
</div>

5. 偏移列(Offset)

有时你可能希望让某一列向右偏移一定的距离。Bootstrap 提供了 offset-* 类来实现这一点。

示例:

<div class="row">
  <div class="col-4">Column 1</div>
  <div class="col-4 offset-4">Column 2 (offset by 4 columns)</div>
</div>

在这个例子中,第二列会向右偏移 4 列。

6. 嵌套网格

你还可以在列内嵌套网格来创建更复杂的布局。只需要在列内创建另一个 .row 并定义相应的列。

示例:

<div class="row">
  <div class="col-6">
    <div class="row">
      <div class="col-6">Nested Column 1</div>
      <div class="col-6">Nested Column 2</div>
    </div>
  </div>
  <div class="col-6">Column 2</div>
</div>

在这个例子中,嵌套的 .row 中有两个列,每个占 6 列,总共 12 列。

7. 隐藏列

如果你希望某些列在特定的屏幕大小下不可见,Bootstrap 提供了 d-none, d-sm-block, d-md-none 等类来控制显示/隐藏。

示例:

<div class="row">
  <div class="col d-none d-md-block">Visible on medium and larger screens</div>
  <div class="col d-none d-sm-block">Visible on small and larger screens</div>
</div>

  • d-none:在所有屏幕尺寸下隐藏。
  • d-md-block:在中等屏幕及以上显示,其他设备隐藏。
  • d-sm-block:在小屏幕及以上显示,其他设备隐藏。

总结

Bootstrap 4 的网格系统让布局变得非常简单和灵活。它可以帮助你创建响应式、列状、甚至是复杂的布局,只需要使用基本的类和栅格系统的概念。通过合理使用这些类,你可以确保网站在各种设备和屏幕尺寸下都能保持良好的布局和用户体验。

如果你有任何疑问或想要深入了解某个特定部分,随时告诉我!