【问题标题】:How can I make a bulma table responsive?如何使 bulma 表响应?
【发布时间】:2018-05-18 19:10:10
【问题描述】:

我正在使用 Bulma CSS 框架,特别是我正在尝试使其中的表格具有响应性。

我尝试给它一个width: 100%; 并应用overflow-x: auto;,但它似乎不起作用。这是演示:http://104.236.64.172:8081/#/pricing

代码:

<div class="panel-block">
    <table class="table is-bordered pricing__table">
        <thead>
            <tr>
                <th>Travellers</th>
                <th>Standard</th>
                <th>Delux</th>
                <th>Premium</th>
                <th>Luxury</th>
            </tr>
        </thead>

        <tbody>
            <tr>
                <td>Per Person Cost</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
            </tr>
            <tr>
                <td>
                    Extra Person <br>
                    (> 12 yrs)
                </td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
            </tr>
            <tr>
                <td>
                    Extra Child <br>
                    (> 12 yrs)
                </td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
            </tr>
            <tr>
                <td>Total Cost</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
                <td>₹ 70,523.90</td>
            </tr>
        </tbody>
    </table>
</div>

相关CSS:

.pricing__table {
    width: 100%;
    overflow-x: auto;
}

【问题讨论】:

  • 我无法重现该问题,正如它所描述的那样。
  • 看看演示。问题就在那里。

标签: css html-table responsive bulma


【解决方案1】:

您可以将表格包装在一个容器中,然后在其中应用 overflow 属性。

此外,您可以在 table 上使用 is-fullwidth 修饰符,而不是在 CSS 中声明 width

fiddle

.table__wrapper {
  overflow-x: auto;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.1/css/bulma.css" rel="stylesheet" />
<div class="table__wrapper">
  <table class="table is-bordered pricing__table is-fullwidth">
    <tbody>
      <tr>
        <td>Per Person Cost</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
      </tr>
      <tr>
        <td>
          Extra Person <br> (> 12 yrs)
        </td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
      </tr>
      <tr>
        <td>
          Extra Child <br> (> 12 yrs)
        </td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
      </tr>
      <tr>
        <td>Total Cost</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
        <td>₹ 70,523.90</td>
      </tr>
    </tbody>
  </table>
</div>

根据评论更新

在您的情况下,您还需要将width 属性添加到.pricing

updated fiddle

.table__wrapper {
  overflow-x: auto;
}

.pricing {
  width: 100%;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.1/css/bulma.css" rel="stylesheet"/>
<div class="panel">
  <div class="panel-block">
    <div class="pricing">
      <div class="table__wrapper">
        <table class="table is-bordered pricing__table is-fullwidth">
          <tbody>
            <tr>
              <td>Per Person Cost</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
            </tr>
            <tr>
              <td>
                Extra Person
                <br> (> 12 yrs)
              </td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
            </tr>
            <tr>
              <td>
                Extra Child
                <br> (> 12 yrs)
              </td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
            </tr>
            <tr>
              <td>Total Cost</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
              <td>₹ 70,523.90</td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 嘿,谢谢。当我将此解决方案应用于此处正在运行的网站时出现问题:104.236.64.172:8081/#/pricing 也许它与 flexbox 或我在布尔玛的panel-block 内使用表格有关。它似乎不起作用。你能帮我调试一下吗?只需使用 chrome 检查器将这些更改应用到实时站点并亲自查看。
  • 你能改变标记吗?尝试用自己的div 包装表格,就像在 sn-p 中一样。
  • 我做到了。你可以自己检查。在检查员。只需右键单击&lt;table&gt; 节点和Edit as HTML。然后将表格包装在div
  • 我不知道你可以这样编辑 HTML .. 每天学习新东西!我通过删除panel-block 上的flex 使其工作。我认为你需要重组你的 HTML。如果您使用相关的 HTML 和 CSS 编辑您的问题会更容易提供帮助,谢谢
  • 太好了,很高兴它有帮助
【解决方案2】:

在父 div 中使用 .table-container

<div class="table-container">
  <table class="table">
    <!-- Your table content -->
  </table>
</div>

https://bulma.io/documentation/elements/table/#table-container

【讨论】:

  • 对,只是不要将 .table-container 包装在 columnscolumn 类中
【解决方案3】:

我找到了一个great alternative,它可以将水平元素变成垂直元素:

@media
only screen and (max-width: 1500px) {
  table, thead, tbody, th, td, tr {
    display: block;
  }
  thead tr {
    position: absolute;
    top: -9999px;
    left: -9999px;
  }
  tr { border: 1px solid #ccc; }
  td {
    border: none;
    border-bottom: 1px solid #eee;
    position: relative;
    padding-left: 200px;
    margin-left: 150px;
  }
  td:before {
    position: absolute;
    top: 12px;
    left: 6px;
    width: 200px;
    padding-right: 40px;
    white-space: nowrap;
    margin-left: -150px;
  }
  td:nth-of-type(1):before { content: "Option"; }
  td:nth-of-type(2):before { content: "Description"; }
  td:nth-of-type(3):before { content: "Type"; }
  td:nth-of-type(4):before { content: "Default";}
}

如果您不需要标头,请删除 td:before 修饰符。

【讨论】:

  • 这太棒了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 2018-03-30
  • 2017-08-02
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多