我使用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;
它可以工作,但是我不确定其他选项是否仍然可以工作。
能帮我吗?有什么办法可以使该表响应? :)
答案 0 :(得分:0)
我不知道Element UI中的数据属性绑定,因此我仅使用纯HTML和CSS共享了响应表的代码。 在移动/平板电脑视图中,我们可以使用data属性显示表格。
.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>
答案 1 :(得分:0)
kavinraj的方法是一个很好的解决方案。 如果表格真的很宽,您也可以将其包装在div中。
<div class="table-container">
<table></table>
</div>
@media screen and (max-width:768px) {
.table-container {
overflow: auto;
}
}
用户可以滑动以查看表格的其余部分
答案 2 :(得分:0)
使用以下css-每行将显示4列,您可以更改每行显示更多或更少列的百分比:
@media only screen and (max-width: 770px) {
table tr td{
float: left;
width:25%;
}
}
答案 3 :(得分:0)
我参加聚会有点晚了,但当我刚刚偶然发现同样的问题时,我想我会分享我的发现:
当我用 div
或 span
包裹我的桌子时,我遇到了完全相同的问题。扩展时完美响应,但在再次缩小浏览器窗口时根本没有响应。好像卡在最大宽度一样。
因为我真的需要将我的表格包裹在一些东西中以使用 v-if 并有时隐藏整个表格组件,我一直尝试并最终发现表格在包裹在 <template>
标签中时表现正常.