【问题标题】:Element - responsive table issue元素 - 响应表问题
【发布时间】:2019-07-10 05:40:14
【问题描述】:

我使用 Element (https://element.eleme.io/#/en-US) 创建了一个应用程序,但我正在努力使表格具有响应性。

当我让我的窗口变宽时,一切正常,但是当我把它变窄时,表格宽度保持不变,我尝试了所有表格选项,但似乎没有什么能让它变得更好,这是我的示例:https://streamable.com/1j1e1,之后刷新页面,表格正确调整大小。

我发现如果我在 element-ui.common.js 中注释这些行:

  this.bodyWidth = Math.max(bodyMinWidth, bodyWidth);
  this.table.resizeState.width = this.bodyWidth;

它有效,但我不确定其他选项是否仍然有效。

你能帮帮我吗?有什么办法可以让这个表响应吗? :)

【问题讨论】:

    标签: javascript html css responsive-design responsive


    【解决方案1】:

    我不知道 Element UI 中的数据属性绑定,所以我只分享了纯 HTML 和 CSS 的响应式表格的代码。 当涉及到移动/平板视图时,我们可以使用数据属性来显示表格。

    .rwd-table {
      margin: 1em 0;
      min-width: 300px;
    }
    .rwd-table tr {
      border-top: 1px solid #ddd;
      border-bottom: 1px solid #ddd;
    }
    .rwd-table th {
      display: none;
    }
    .rwd-table td {
      display: block;
    }
    .rwd-table td:first-child {
      padding-top: .5em;
    }
    .rwd-table td:last-child {
      padding-bottom: .5em;
    }
    .rwd-table td:before {
      content: attr(data-th) ": ";
      font-weight: bold;
      width: 6.5em;
      display: inline-block;
    }
    @media (min-width: 480px) {
      .rwd-table td:before {
        display: none;
      }
    }
    .rwd-table th, .rwd-table td {
      text-align: left;
    }
    @media (min-width: 480px) {
      .rwd-table th, .rwd-table td {
        display: table-cell;
        padding: .25em .5em;
      }
      .rwd-table th:first-child, .rwd-table td:first-child {
        padding-left: 0;
      }
      .rwd-table th:last-child, .rwd-table td:last-child {
        padding-right: 0;
      }
    }
    
    body {
      padding: 0 2em;
      color: #444;
      background: #eee;
    }
    
    h1 {
      font-weight: normal;
      letter-spacing: -1px;
      color: #34495E;
    }
    
    .rwd-table {
      background: #34495E;
      color: #fff;
      border-radius: .4em;
      overflow: hidden;
    }
    .rwd-table tr {
      border-color: #46637f;
    }
    .rwd-table th, .rwd-table td {
      margin: .5em 1em;
    }
    @media (min-width: 480px) {
      .rwd-table th, .rwd-table td {
        padding: 1em !important;
      }
    }
    .rwd-table th, .rwd-table td:before {
      color: #dd5;
    }
    <table class="rwd-table">
      <tr>
        <th>Movie Title</th>
        <th>Genre</th>
        <th>Year</th>
        <th>Gross</th>
      </tr>
      <tr>
        <td data-th="Movie Title">Star Wars</td>
        <td data-th="Genre">Adventure, Sci-fi</td>
        <td data-th="Year">1977</td>
        <td data-th="Gross">$460,935,665</td>
      </tr>
      <tr>
        <td data-th="Movie Title">Howard The Duck</td>
        <td data-th="Genre">"Comedy"</td>
        <td data-th="Year">1986</td>
        <td data-th="Gross">$16,295,774</td>
      </tr>
      <tr>
        <td data-th="Movie Title">American Graffiti</td>
        <td data-th="Genre">Comedy, Drama</td>
        <td data-th="Year">1973</td>
        <td data-th="Gross">$115,000,000</td>
      </tr>
    </table>

    【讨论】:

    • 我没有使用 jQuery,我说的是名为 Element 的 Vue 库(我在问题中附加了一个链接)。
    • @JakubSaleniuk 我从答案中删除了 jQuery,借助数据属性 HTML 和 CSS,我们可以实现结果。但我不知道 Vue 2.0 的 Element UI 中的数据属性绑定
    【解决方案2】:

    kavinraj 的做法是一个很好的解决方案。 如果表格真的很宽,您也可以将其包装在一个 div 中。

    <div class="table-container">
        <table></table>
    </div>
    
    @media screen and (max-width:768px) {
        .table-container {
            overflow: auto;
        }
    }
    

    用户可以滑动查看表格的其余部分

    【讨论】:

      【解决方案3】:

      使用以下 css-它将每行显示 4 列,您可以更改百分比以每行显示更多或更少的列:

      @media only screen and (max-width: 770px) {
        table tr td{
          float: left;
          width:25%;
        }
      }
      

      【讨论】:

        【解决方案4】:

        我参加聚会有点晚了,但由于我刚刚偶然发现了同样的问题,我想我会分享我的发现:

        当我用divspan 包装我的桌子时,我遇到了完全相同的问题。再次缩小浏览器窗口时,在扩展时具有完美的响应能力,但根本没有响应。好像卡在最大宽度上一样。

        由于有时我确实需要将表格包裹在某些东西中以使用 v-if 并隐藏整个表格组件,因此我不断尝试并最终发现表格在包裹在 &lt;template&gt;-tag 时表现正常。

        【讨论】:

          猜你喜欢
          • 2020-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-25
          • 2017-04-10
          • 1970-01-01
          相关资源
          最近更新 更多