【问题标题】:Nesting columns good practice?嵌套列的好习惯?
【发布时间】:2017-06-05 13:41:04
【问题描述】:

我找不到任何关于这是否应该做的规则。 Bootstrap 在其规则中清楚地概述了以下内容:

  • 行必须放置在 .container(固定宽度)或 .container-fluid(全角)用于正确对齐和填充

  • 使用行来创建水平列组

  • 内容应放在栏内,并且只能放在栏内
    行的直接子代

因此,由此我得出结论,我确实想要独立的网站的每个部分都有一个 container 类。在其中我们有一个row,在其中我们有一个column。像这样:

<div class="container">
    <div class="row">
        <div class="col">COL 1 of 2</div>
        <div class="col">COL 2 of 2</div>
    </div>
</div>

现在我的问题是,规则规定只有列可以是行的直接子代,但它没有说明列的子代应该是什么。如果我想在另一列中“嵌套”另一组双列,我会像情况一还是情况二那样写吗?

<div class="container">
    <div class="row">
        <div class="col">  <!--Columns within columns without a row-->
            <div class="col"> 
            <div class="col">
        </div>
        <div class="col">  <!--Row nested before nesting columns-->
            <div class="row">
                <div class="col"> 
                <div class="col">
            </div>
        </div>
    </div>
</div>

两者都在实际制作页面方面起作用,但我不知道什么被认为是“好的做法”。两种写东西的方式显然都有局限性。就我而言,我希望“列”填充动态生成的元素数量,这些元素在不同的屏幕分辨率/响应大小上会对齐,因此行包装器不是一个选项。我不知道每行有多少个元素,这会使以下行在不需要时中断和换行。

那么,可以将列嵌套在没有一行来容纳子项的列中吗?

【问题讨论】:

  • “如果我想在另一列中“嵌套”另一组双列,我会写成案例一还是案例二?”案例2
  • 在文档中解释:getbootstrap.com/css/#grid-nesting
  • @ZimSystem 文档解释说,您将行嵌套在列中,并且始终以这种开关row / col 的方式,但我需要在一列中嵌套一列,而不是一行。这可以接受吗?
  • 这不是“可接受的”,因为正如解释的那样“在现有列中添加一个新的 .row 和一组列”。由于负边距和填充,cols 应该始终是一行的直接子代。
  • 我猜想我误解了那个文本。声明“只有 cols 是 row 的直接子代”但是并不限制 cols 将 cols 作为自己的子代。我没有得到整个负边距/填充的东西。

标签: html css twitter-bootstrap


【解决方案1】:

您应该将任何嵌套的 .rows 放在 .container 内以包含负边距,并且只将 .col 嵌套在 .row 内:

<div class="container">
     <div class="row">
        <div class="col">  <!--Row nested before nesting columns-->
          <div class="container">
            <div class="row">
                <div class="col"> </div>
                <div class="col"> </div>
            </div>
          </div><!-- .container -->
        </div>
    </div>
</div>

【讨论】:

  • 拥有一个容器并不能解决问题,它会进一步增强它。问题不是how to nest a row in a column 而是is nesting a set of columns within a column WITHOUT a row okay? 我知道这是可行的,但我不知道我是否应该这样做。而且我不希望我的inner columns 被分组到行中
  • 我回答说:“只在 .row 中嵌套一个 .col。” getbootstrap.com/css/#grid-nesting
【解决方案2】:

嵌套行在语义上更好,在某些边缘情况下可以保持设计。然而,这是基于最佳实践的意见。

我将列放在前面的行只是为了清楚您的意图并使其更加模块化。

最好将其视为一个模块并问自己“我可以将这部分标记从它的位置抬起并放在页面上的任何其他位置并且它仍然保持它的形式吗?”通过将其封装在一行中,您可以对该问题回答“是”。当然,它始终是只添加必要的标记和模块化之间的一场战斗,但使用 SMACSS、面向对象的 CSS 等概念……在我们如何考虑构建标记和 CSS 方面发挥带头作用,似乎共识是为了保持模块化,添加了一些额外的标记。

【讨论】:

  • 我想你在那个 HTML 代码中做了一个boo boo,我已经在我添加到主帖子的示例中“添加了额外的行”,从而使其模块化。如果我理解正确的话,将列保留在行中并完成它在语义上会更好。
  • 是的,对不起。不习惯用stackoverflow写代码。是的。最好将列保持在行内并完成。再次,这是固执己见,但请注意,有些人不同意。我真的更喜欢 Jonathan Snook 维护 css 和 html 的方式(SMACSS 的作者),他做的第一件事就是在所有这些标记周围绘制容器,以额外的 div 为代价以保持模块化。希望对您有所帮助。
  • 如果内容是动态的会发生什么,看看这个:bootply.com/T6CrevHsTh所有列都在一行内,但行为不应该如图所示
  • 抱歉,我不确定您希望最终设计的样子。您是否希望所有彩色框都浮动和包裹而没有间距?或者您可以选择堆叠箱子吗?需要注意的是不知道目标是什么,并且如果您可以选择使用 flexbox,我将在行中创建自己的类并使用 flexbox wrap,它将正确地整齐地包装所有 div。如果您不需要它来包装,那么我会将每个 3rd col-md-3 div 包装在另一行中,这将分组清除它们并进一步模块化组。不确定这是否有意义?
  • 它应该看起来像这样:imgur.com/a/cNtgG 这个问题是,我知道 3 行会让这变得轻而易举,但元素的数量既不是有限的(在这个例子中是 9 ) 也不是每行处理特定数量的元素,因为随着响应式设计的开始,列从 col-md-4 切换到 col-sm-6col-xs-12 以使其对移动设备友好。如果我们说,每行有 3 个,一旦它交换到 col-sm-6,就会有一个 gap 留给第 4 个元素,它应该由另一列填充。行组使它成为不可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多