【问题标题】:More than 12 bootstrap columns with a horizontal scroll超过 12 个带有水平滚动的引导列
【发布时间】:2016-11-17 20:21:27
【问题描述】:

我正在尝试使用引导网格系统制作表格。我知道我们应该每行只使用 12 列。但我希望整个表格有超过 12 列的水平滚动。所以我正在尝试使用以下代码 sn-p

<span class="col-md-2" style="text-align: center;"><b>Field 1</b></span>
<span class="col-md-2" style="text-align: center;"><b>Field 2</b></span>
<span class="col-md-2" style="text-align: center;"><b>Field 3</b></span>
<span class="col-md-2" style="text-align: center;"><b>Field 4</b></span>
<span class="col-md-2" style="text-align: center;"><b>Field 5</b></span>
<span class="col-md-2" style="text-align: center;"><b>Field 6</b></span>
<span class="col-md-2" style="text-align: center;"><b>Field 7</b></span>
<span class="col-md-2" style="text-align: center;"><b>Field 8</b></span>

我想在一行中显示如上所述的 8 个字段。但是在第6场之后,其他两个场正在下降。有什么办法可以让所有 8 个字段在单行中水平滚动。

【问题讨论】:

标签: html css twitter-bootstrap twitter-bootstrap-3 grid-layout


【解决方案1】:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

<div class="container-fluid">
  <div class="row">
    <div class="col-md-3">
      <div class="row text-center">
        <div class="col-md-6"><b>Field 1</b></div>
        <div class="col-md-6"><b>Field 2</b></div>
      </div>
    </div>
    <div class="col-md-3">
      <div class="row text-center">
        <div class="col-md-6"><b>Field 3</b></div>
        <div class="col-md-6"><b>Field 4</b></div>
      </div>
    </div>
    <div class="col-md-3">
      <div class="row text-center">
        <div class="col-md-6"><b>Field 5</b></div>
        <div class="col-md-6"><b>Field 6</b></div>
      </div>
    </div>
    <div class="col-md-3">
      <div class="row text-center">
        <div class="col-md-6"><b>Field 7</b></div>
        <div class="col-md-6"><b>Field 8</b></div>
      </div>
    </div>
  </div>
</div>

【讨论】:

    【解决方案2】:

    您可以将引导程序 col-12 一分为二。您现在有 24 列

        <div class "row">
          <div class="col-6">
            <div class "row">
              <div class="col-1">
                1
              </div>
              <div class="col-1">
                2
              </div>
              <div class="col-1">
                3
              </div>
              <div class="col-1">
                4
              </div>
              <div class="col-1">
                5
              </div>
              <div class="col-1">
                6
              </div>
              <div class="col-1">
                7
              </div>
              <div class="col-1">
                8
              </div>
              <div class="col-1">
                9
              </div>
              <div class="col-1">
                10
              </div>
              <div class="col-1">
                11
              </div>
              <div class="col-1">
                12
              </div>
            </div>
          </div>
          <div class="col-6">
            <div class "row">
              <div class="col-1">
                13
              </div>
              <div class="col-1">
                14
              </div>
              <div class="col-1">
                15
              </div>
              <div class="col-1">
                16
              </div>
              <div class="col-1">
                17
              </div>
              <div class="col-1">
                18
              </div>
              <div class="col-1">
                19
              </div>
              <div class="col-1">
                20
              </div>
              <div class="col-1">
                21
              </div>
              <div class="col-1">
                22
              </div>
              <div class="col-1">
                23
              </div>
              <div class="col-1">
                24
              </div>
            </div>
          </div>
        </div>
    

    【讨论】:

      【解决方案3】:

      Bootstrap 网格的四个技巧

      1) 8 列

      您可以使用嵌套网格。没有任何表格或自定义。例如:

      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
      
      <div class="container-fluid">
        <div class="row">
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 1</b></div>
              <div class="col-md-6"><b>Field 2</b></div>
            </div>
          </div>
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 3</b></div>
              <div class="col-md-6"><b>Field 4</b></div>
            </div>
          </div>
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 5</b></div>
              <div class="col-md-6"><b>Field 6</b></div>
            </div>
          </div>
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 7</b></div>
              <div class="col-md-6"><b>Field 8</b></div>
            </div>
          </div>
        </div>
      </div>

      2) 滚动

      增加主行的宽度,如果要添加水平滚动:

      @media (min-width: 992px) {
        .container-scroll {
          overflow-x: auto;
        }
        .container-scroll > .row {
          width: 133.33333333%; /* = 100% * 4/3 */
        }
      }
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
      
      <div class="container-fluid container-scroll">
        <div class="row">
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 1</b></div>
              <div class="col-md-6"><b>Field 2</b></div>
            </div>
          </div>
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 3</b></div>
              <div class="col-md-6"><b>Field 4</b></div>
            </div>
          </div>
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 5</b></div>
              <div class="col-md-6"><b>Field 6</b></div>
            </div>
          </div>
          <div class="col-md-3">
            <div class="row text-center">
              <div class="col-md-6"><b>Field 7</b></div>
              <div class="col-md-6"><b>Field 8</b></div>
            </div>
          </div>
        </div>
      </div>

      3) 不同的列数

      如果每一行有不同的列数,但列数是预先知道的。

      在这种情况下,行的宽度可能不同。因此,需要相对于屏幕宽度来设置列的宽度,而不是相对于行的宽度。

      1. 使用vw 而不是%
      2. 为行设置特殊宽度,如果它比100vw更宽

      @media (min-width: 992px) {
        .container-scroll {
          overflow-x: auto;
        }
        .container-scroll .columns-16 {
          width: 133.33333333vw;  /* = 100vw * 16/12 */
        }
        .container-scroll .columns-24 {
          width: 200vw;  /* = 100vw * 24/12 */
        }
        .container-scroll .col-md-2 {
          width: 16.66666667vw !important;
        }
      }
      
      .container-scroll > .row {
        margin-top: 24px;
      }
      .container-scroll > .row > .col-md-2 {
        font-weight: bold;
        text-align: center;
      }
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
      
      <div class="container-fluid container-scroll">
        <div class="row columns-16">
          <div class="col-md-2">Field 1</div>
          <div class="col-md-2">Field 2</div>
          <div class="col-md-2">Field 3</div>
          <div class="col-md-2">Field 4</div>
          <div class="col-md-2">Field 5</div>
          <div class="col-md-2">Field 6</div>
          <div class="col-md-2">Field 7</div>
          <div class="col-md-2">Field 8</div>
        </div>
      </div>
        
      <div class="container-fluid container-scroll">
        <div class="row columns-24">
          <div class="col-md-2">Field 1</div>
          <div class="col-md-2">Field 2</div>
          <div class="col-md-2">Field 3</div>
          <div class="col-md-2">Field 4</div>
          <div class="col-md-2">Field 5</div>
          <div class="col-md-2">Field 6</div>
          <div class="col-md-2">Field 7</div>
          <div class="col-md-2">Field 8</div>
          <div class="col-md-2">Field 9</div>
          <div class="col-md-2">Field 10</div>
          <div class="col-md-2">Field 11</div>
          <div class="col-md-2">Field 12</div>
        </div>
      </div>
        
      <div class="container-fluid container-scroll">
        <div class="row">
          <div class="col-md-2">Field 1</div>
          <div class="col-md-2">Field 2</div>
          <div class="col-md-2">Field 3</div>
          <div class="col-md-2">Field 4</div>
        </div>
      </div>

      4) 列数未知

      如果您不知道一行中的列数,请将列转换为内联块。

      @media (min-width: 992px) {
        .container-scroll > .row {
          overflow-x: auto;
          white-space: nowrap;
        }
        .container-scroll > .row > .col-md-2 {
          display: inline-block;
          float: none;
        }
      }
      
      .container-scroll > .row {
        margin-top: 24px;
      }
      .container-scroll > .row > .col-md-2 {
        font-weight: bold;
        text-align: center;
      }
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
      
      <div class="container-fluid container-scroll">
        <div class="row">
          <div class="col-md-2">Field 1</div>
          <div class="col-md-2">Field 2</div>
          <div class="col-md-2">Field 3</div>
          <div class="col-md-2">Field 4</div>
          <div class="col-md-2">Field 5</div>
          <div class="col-md-2">Field 6</div>
          <div class="col-md-2">Field 7</div>
          <div class="col-md-2">Field 8</div>
        </div>
      
        <div class="row">
          <div class="col-md-2">Field 1</div>
          <div class="col-md-2">Field 2</div>
          <div class="col-md-2">Field 3</div>
          <div class="col-md-2">Field 4</div>
          <div class="col-md-2">Field 5</div>
          <div class="col-md-2">Field 6</div>
          <div class="col-md-2">Field 7</div>
          <div class="col-md-2">Field 8</div>
          <div class="col-md-2">Field 9</div>
          <div class="col-md-2">Field 10</div>
          <div class="col-md-2">Field 11</div>
          <div class="col-md-2">Field 12</div>
        </div>
      
        <div class="row">
          <div class="col-md-2">Field 1</div>
          <div class="col-md-2">Field 2</div>
          <div class="col-md-2">Field 3</div>
          <div class="col-md-2">Field 4</div>
        </div>
      </div>

      【讨论】:

      • 我实际上正在寻找带有水平滚动的第二种方法,因为我希望有多个列,这些列在用户选择时是动态的,并且它们应该动态显示。所以滚动方法会让我摆脱让用户选择更多列而不干扰我的其他 UI 元素和视图的问题
      • @newbie 我改进了我的答案。请检查两个新的解决方案。它们有帮助吗?
      • 哇!这简直太棒了!!!将它们转换为内联块将是最好的解决方案,因为现在每一行都可以独立于不同的大小。感谢@Gleb Kemarsky 的解决方案
      • @newbie 很高兴为您提供帮助 :) 我已经简化了第四个解决方案的 HTML 和 CSS。请检查它是如何工作的。
      • 简单漂亮。
      【解决方案4】:

      获取更多列:

      您可以从这里制作自己的 Bootstrap 变体:http://getbootstrap.com/customize/,您可以在其中设置网格布局使用的列数以及几乎任何其他 CSS 自定义,然后再下载、安装和使用它(新)您网站上的模板。

      简单。

      或者,如果您喜欢挑战并且有几个小时的时间可以杀死,您可以打开 Bootstrap.css 文件并手动添加新的 CSS 元素并重新调整每个列定义的 width [百分比] 参数。

      水平滚动表格

      引导程序的整个前提是无论如何都不会让任何东西溢出屏幕。如果您特别确实希望事情溢出,那么您要么不应该使用引导程序,要么您需要手动调整 CSS 中的一些设置,再次,我建议您返回 http://getbootstrap.com/customize/ 哪个 可能有解决方案,否则你可以探索 CSS 并在引导模板文件中设置一些 CSS 参数。

      很可能有一个预定义的引导表 css 类可用于此类事情,您是否探索过Bootstrap documentation

      或者Searching other questions on Stack Overflow 可以为您提供一些手动执行此操作的有用答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        • 2017-06-17
        • 1970-01-01
        • 2014-12-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        相关资源
        最近更新 更多