【问题标题】:Must all content, even if it is just one column, be placed inside rows?是否必须将所有内容(即使只是一列)放在行内?
【发布时间】:2026-01-10 18:25:06
【问题描述】:

在 Bootstrap 中,所有内容(例如,即使只是放置在页面中间的基本文本块)都必须放置在列和行中。我的网站似乎可以正常工作:

<div class="container-fluid">
   <h2>My Heading</h2> 
   <p>This Is Content On the page</p> 
</div>

然而,有人告诉我应该是这样的:

<div class="container-fluid">
   <h2>My Heading</h2> 
   <div class="row"> 
      <div class="col">I'm content inside the grid</div> 
   </div> 
</div>

然而,在引导站点本身的一些模板上,它们并不总是使用列和行。

我真的很困惑......

谢谢

【问题讨论】:

  • 行和列是引导程序提供的网格系统......所以如果你想将你的网站分成几部分,这很好。如果您想使用 100% 的容器液体,那您很高兴 :) 没有人将您推向您不想做和不需要做的事情......
  • 这取决于你是否想要你的排水沟 - 将屏幕的宽度调整为文本的大小,你会发现它与行和列中的内容不对齐跨度>
  • 投票结束,因为它主要是意见。
  • 相关*.com/questions/29710013/…(不是骗子——只是相关)——我的回答是关于 .row 和 .col 类是建议而不是绝对规律。

标签: html css twitter-bootstrap


【解决方案1】:

不,并非所有内容都需要放在.rows 中。

.rows 和.cols 只是为您提供了一个可自定义的网格系统(即:列数、装订线大小、响应断点是可以自定义的一些东西)旨在在不同的页面上以不同的方式显示内容宽度。这(以及将行划分为 12 列)就是它的设计目的。

rowscols 的唯一目的是在不同的页面宽度下以不同的方式划分空间并提供一些小的填充(排水沟)。如果您的部分内容不需要它,请不要使用它。每当您有想要根据自己的自定义规则显示的部分时,您都可以简单地包含它并根据需要设置样式。

因此,例如,这是完全有效的,可以在各种 Bootstrap 示例中看到:

<div class="container">
  <div class="row">
     <div class="col">
       ... normal layout cols here
     </div>
  </div>
  <div> 
     your custom stuff here. you need to provide responsiveness CSS rules for this content.
     Out of the box, being a `<div>`, this will fill all the available width
     if, for example, it was included in a `.container-fluid`, 
     it would span the entire browser window, at all screen widths.
  </div>
  <div class="row">
     <div class="col">
       ... more normal layout here...
     </div>
  </div> 

但是,当您想使用.cols 时,您应该将它们作为.rows 的直接子代。如果你不这样做,你会在你的内容中看到一些令人讨厌的水平滚动条,因为网格有一个负边距和(正)填充系统来满足各种宽度尺寸的排水沟。

【讨论】:

  • 非常感谢您的帮助 :) 听起来我要保持简单,并避免我的主页使用整个列系统,因为我不需要。使用流体容器时,使用@media 标记为不同视口宽度设置边距等的合适系统是否可以?我希望能够分别控制左右边距,这对于普通的 .container 和断点似乎无法做到。我知道我试图将 .container-fluid 变成 .container 似乎很愚蠢
  • 不要与 Bootstrap 对抗。作为一般规则,不应用 Bootstrap 中的特定类比应用它然后覆盖它更好的方法。如果您需要它适用的一些规则,那么创建自己的类是一种更好的方法,将代码复制到您想要的类,并省略/更改您想要的不同部分。当您处理来自 Bootstrap 的 !important 规则时尤其如此,这是一个巨大的错误。旧版本的 Bootstrap 的好处之一是它保持了较低的特异性水平。没有了。
  • 啊,我明白了,谢谢。由于这个原因,我一直在避免 !important 。例如,我想更改 .container 类的标准填充,最好的方法是什么?
  • 我已经告诉过你:最好的方法是去做。但是不要听我的建议。去做吧。你最终会学习 CSS,这是一件好事。
  • 啊,我明白了,所以使用引导程序的一般想法是只使用他们的 CSS 并处理它,即使你不喜欢内置颜色等?
【解决方案2】:

使用这个基本示例,一切正常,尤其是当标题居中时。对 Bootstrap 网格使用不同的方法通常不是一个好主意。

来自引导程序docs

在网格布局中,内容必须放在列内,并且只能 列可以是行的直接子级。

  • 因为长期会出现对齐问题。
  • 其次,当您开始将 SASS 与 Bootstrap 一起使用并更改网格变量时,一切都会保持一致并由 一处。

在您的示例中,如果要对齐标题,则需要添加 ma​​rgin-left 以便与 我在网格内的内容 对齐。

看看这个例子,无论有没有行/列,一切都是如何对齐的:https://codepen.io/LaCertosus/pen/KKKzVqR

<div class="container-fluid mt-5">
  <div class="row">
    <div class="col">
      This text is inside <b>row</b> and <b>col</b>
    </div>
  </div>
  <div class="row">
    This text is only inside <b>row</b>
  </div>
  <div class="col">
    This text is only inside <b>col</b>
  </div>
  <div>
    This text is only <b>container</b>
  </div>
</div>
<div>
  This text is outside <b>container</b>
</div>

问为什么我必须生成这么多样板是正确的问题,但从长远来看,当元素需要在不同的屏幕尺寸中对齐和缩放时,它就会出现。

【讨论】:

    最近更新 更多