【问题标题】:Bootstrap combining rows (rowspan)Bootstrap 组合行(rowspan)
【发布时间】:2021-03-03 18:22:10
【问题描述】:

我正在测试 Twitter Bootstrap 并陷入困境 带行的基本脚手架。我多次重新访问他们的文档,我可以看到嵌套列,您基本上可以在列中嵌套列,但我找不到 将行合并为一并使其与未合并行旁边的列对齐的能力。

下图应该说明我想要完成的事情。

我遇到的唯一解决方法是使用表格,但我不喜欢这个想法 因为我的观点是响应能力不适用于使用表格。

有没有人对此有任何优雅的解决方案? 我所做的大部分网络布局都需要高度的灵活性,所以如果我能在这里找到一些有用的东西会很棒。

【问题讨论】:

    标签: twitter-bootstrap bootstrap-grid


    【解决方案1】:

    Divs 默认垂直堆叠,因此不需要对列中的“行”进行特殊处理。

    div {
      height:50px;
    }
    .short-div {
      height:25px;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
    
    <div class="container">
      <h1>Responsive Bootstrap</h1>
      <div class="row">
        <div class="col-lg-5 col-md-5 col-sm-5 col-xs-5" style="background-color:red;">Span 5</div>
        <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3" style="background-color:blue">Span 3</div>
        <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="padding:0px">
          <div class="short-div" style="background-color:green">Span 2</div>
          <div class="short-div" style="background-color:purple">Span 2</div>
        </div>
        <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="background-color:yellow">Span 2</div>
      </div>
    </div>
    <div class="container-fluid">
      <div class="row-fluid">
        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
          <div class="short-div" style="background-color:#999">Span 6</div>
          <div class="short-div">Span 6</div>
        </div>
        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6" style="background-color:#ccc">Span 6</div>
      </div>
    </div>

    输出:

    这里是the fiddle

    【讨论】:

    • 非常感谢。这就是我要找的!我希望 Bootstrap 文档在嵌套列下另外提到这一点,因为方法基本相同。
    • 在您的示例中,您定义了1row=25px2row=50px。你能让跨越的 div 和整行一样高吗?尝试添加.row{height:100%;},但没有成功。
    • 是的,@carter 原始示例不符合 bootstrap 3;我已经更正了。
    • 该示例在第二行有排水沟,看起来很奇怪。
    【解决方案2】:

    您应该使用引导列嵌套。

    Bootstrap 3Bootstrap 4

    <div class="row">
        <div class="col-md-5">Span 5</div>
        <div class="col-md-3">Span 3<br />second line</div>
        <div class="col-md-2">
            <div class="row">
                <div class="col-md-12">Span 2</div>
            </div>
            <div class="row">
                <div class="col-md-12">Span 2</div>
            </div>
        </div>
        <div class="col-md-2">Span 2</div>
    </div>
    <div class="row">
        <div class="col-md-6">
            <div class="row">
                <div class="col-md-12">Span 6</div>
                <div class="col-md-12">Span 6</div>
            </div>
        </div>
        <div class="col-md-6">Span 6</div>
    </div>
    

    http://jsfiddle.net/DRanJ/125/

    (在 Fiddle 屏幕中,放大您的测试屏幕以查看结果,因为我使用的是 col-md-*,然后是响应式堆栈列)

    注意:我不确定 BS2 是否允许列嵌套,但在 Paul Keister 的回答中,没有使用列嵌套。您应该使用它并避免在引导程序做得好的时候重新发明 css。

    列高是自动的,如果您添加第二行(就像我在示例中所做的那样),列高会自行调整。

    【讨论】:

    • 这应该是公认的答案,因为它可以与 Bootstrap 一起使用,并且不需要任何 CSS 调整
    • 接受的答案更具可读性;它包含一个代码 sn-p 和一个指向 JSfiddle 的链接,恕我直言 Paul Keister 的示例比 Alcalyn 的示例更清晰。这就是为什么我认为应该将 Paul Keister 的答案保留为公认的答案,至少在 Alcalyn 的答案得到改进之前。
    • @Alcalyn 在我的浏览器(Chrome)中,您的答案中链接的小提琴不会产生预期的结果(参见问题中的图片)。实际结果是所有 div 对齐在一列中。
    • 如果您看到所有对齐跨度的单列,这是因为 -md- 响应规则。您必须放大屏幕才能看到预期的结果。如果您需要跨度在较小的屏幕上显示为列,请将-md- 替换为-sm--xs-。这是一个断点问题(见bootstrapdocs.com/v3.0.3/docs/css/#grid)。
    【解决方案3】:

    注意:这是针对 Bootstrap 2(在提出问题时相关)。

    您可以通过使用row-fluid 在现有block 中创建一个基于流动(百分比)的行来完成此操作。

    <div class="row">
       <div class="span5">span5</div>
       <div class="span3">span3</div>
       <div class="span2">
          <div class="row-fluid">
             <div class="span12">span2</div>
             <div class="span12">span2</div>
          </div>
       </div>
       <div class="span2">span2</div>
    </div>
    <div class="row">
       <div class="span6">
          <div class="row-fluid">
             <div class="span12">span6</div>
             <div class="span12">span6</div>
          </div>
       </div>
       <div class="span6">span6</div>
    </div>
    

    这是JSFiddle example

    我确实注意到,在第一个之后,row-fluid 内部的跨度出现(或不出现)一个奇怪的左边距。这可以通过一个小的 CSS 调整来解决(它与应用于第一个孩子的 CSS 相同,扩展到第一个孩子之后的那些):

    .row-fluid [class*="span"] {
        margin-left: 0;
    }
    

    【讨论】:

    • 感谢您的努力,但看起来一行不必使用 row-fluid 来完成此操作,正如我选择的答案所建议的那样。不过我真的很感激!
    • 非常正确,但不要忘记row-fluid 开始对内部行进行子拆分。
    【解决方案4】:

    检查这个。希望对您有所帮助。

    http://jsfiddle.net/j6amM/

    .row-fix { margin-bottom:20px;}
    
    .row-fix > [class*="span"]{ height:100px; background:#f1f1f1;}
    
    .row-fix .two-col{ background:none;}
    
    .two-col > [class*="col"]{ height:40px; background:#ccc;}
    
    .two-col > .col1{margin-bottom:20px;}
    

    【讨论】:

      【解决方案5】:

      保罗的回答似乎违背了引导的目的;响应视口/屏幕尺寸。

      通过嵌套行和列,您可以获得相同的结果,同时保持响应能力。

      这是对此问题的最新回复;

      <div class="container-fluid">
        <h1>  Responsive Nested Bootstrap </h1> 
        <div class="row">
          <div class="col-md-5" style="background-color:red;">Span 5</div>
          <div class="col-md-3" style="background-color:blue;">Span 3</div>
          <div class="col-md-2">
            <div class="row">
              <div class="container" style="background-color:green;">Span 2</div>
            </div>
            <div class="row">
              <div class="container" style="background-color:purple;">Span 2</div>
            </div>
          </div>
          <div class="col-md-2" style="background-color:yellow;">Span 2</div>
        </div>
        
        <div class="row">
          <div class="col-md-6">
            <div class="row">
              <div class="container" style="background-color:yellow;">Span 6</div>
            </div>
            <div class="row">
              <div class="container" style="background-color:green;">Span 6</div>
            </div>
          </div>
          <div class="col-md-6" style="background-color:red;">Span 6</div>
        </div>
      </div>

      你可以view the codepen here.

      【讨论】:

        【解决方案6】:

        div {
          height:50px;
        }
        .short-div {
          height:25px;
        }
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
        
        <div class="container">
          <h1>Responsive Bootstrap</h1>
          <div class="row">
            <div class="col-lg-5 col-md-5 col-sm-5 col-xs-5" style="background-color:red;">Span 5</div>
            <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3" style="background-color:blue">Span 3</div>
            <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="padding:0px">
              <div class="short-div" style="background-color:green">Span 2</div>
              <div class="short-div" style="background-color:purple">Span 2</div>
            </div>
            <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="background-color:yellow">Span 2</div>
          </div>
        </div>
        <div class="container-fluid">
          <div class="row-fluid">
            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
              <div class="short-div" style="background-color:#999">Span 6</div>
              <div class="short-div">Span 6</div>
            </div>
            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6" style="background-color:#ccc">Span 6</div>
          </div>
        </div>

        【讨论】:

        • 这对我不起作用
      • 请在您的代码周围添加解释。以便 OP 和未来的读者可以轻松理解您的答案。
      • 我只使用了 span2,它运行良好,&lt;div class="row"&gt; &lt;div class="col-sm-5" style="padding:0px"&gt; &lt;div class="short-div" style="background-color:green"&gt;Span 2&lt;/div&gt; &lt;div class="short-div" style="background-color:purple"&gt;Span 2&lt;/div&gt; &lt;/div&gt; &lt;div class="col-sm" style="background-color:yellow"&gt;Span 2&lt;/div&gt; &lt;/div&gt; 与 CSS .short-div {height:50px;} Nice sn-p @SUDIPSINGH
      • 猜你喜欢
        • 2014-10-19
        • 2017-11-11
        • 2014-07-22
        • 1970-01-01
        • 2013-11-13
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        • 2013-01-04
        相关资源
        最近更新 更多