一种相对自适应表格(relative responsive table)并且第一列冻结的方法

转载:http://caibaojian.com/relative-responsive-table

需求分析

该样式的主要需求分析是这样子的:一个表格,有很多列内容,超出了屏幕的最大宽度,如果不做处理的情况下,浏览器会多出一个滚动条,所以我们需要改为没有滚动条,同时可以查看表格的内容。这个常常叫自适应。我之前也写过一篇文章详细的介绍了网络上大多数的自适应表格方法:响应式表格,HTML表格自适应(responsive table)

代码思路

首先左边的第一列是数据的名称,那么滚动的时候这一列最好不随着滚动条拉动而滚动,他会清晰的显示了右边是什么内容。

所以我们分成两部分:一部分是第一列的数据名称,另一部分是数据列表。

左边的数据采用固定宽度或者相对宽度,使用绝对定位浮动在一个地方。

右边则使用正常流,距离左边的宽度等于上面的,这样子右边的整体内容就是一个正常流,我们在里面再嵌套一个div,那么他就是100%的宽度,超出就会隐藏了。

实现代码

html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>responsive table by caibaojian.com</title>
</head>

<body>
    <div class="table-two">
        <div class="table-first">
            <table>
                <thead>
                    <tr>
                        <th>统计项</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>所有用户</td>
                    </tr>
                    <tr>
                        <td>苹果用户</td>
                    </tr>
                    <tr>
                        <td>安卓用户</td>
                    </tr>
                    <tr>
                        <td>亲友账户</td>
                    </tr>
                    <tr>
                        <td>记录发送</td>
                    </tr>
                    <tr>
                        <td>二代绑定</td>
                    </tr>
                    <tr>
                        <td>一代绑定</td>
                    </tr>
                    <tr>
                        <td>二代上传</td>
                    </tr>
                    <tr>
                        <td>一代上传</td>
                    </tr>
                    <tr>
                        <td>上传条数</td>
                    </tr>
                    <tr>
                        <td>活跃用户</td>
                    </tr>
                </tbody>
            </table>
        </div>
        <div class=" table-second">
            <div class="table-container">
                <table>
                    <thead>
                        <tr>
                            <th>今天数</th>
                            <th>昨天数</th>
                            <th>本周数</th>
                            <th>上周数</th>
                            <th>本月数</th>
                            <th>上月数</th>
                            <th>最近6个月</th>
                            <th>总共</th>
                            <th>上传记录最多的用户</th>
                            <th>此用户共上传数据</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td align="center">10</td>
                            <td align="center">2</td>
                            <td align="center">15</td>
                            <td align="center">54</td>
                            <td align="center">141</td>
                            <td align="center">210</td>
                            <td align="center">738</td>
                            <td align="center">12197</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">1</td>
                            <td align="center">0</td>
                            <td align="center">2</td>
                            <td align="center">14</td>
                            <td align="center">36</td>
                            <td align="center">65</td>
                            <td align="center">116</td>
                            <td align="center">116</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">9</td>
                            <td align="center">2</td>
                            <td align="center">13</td>
                            <td align="center">32</td>
                            <td align="center">86</td>
                            <td align="center">105</td>
                            <td align="center">213</td>
                            <td align="center">213</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">0</td>
                            <td align="center">0</td>
                            <td align="center">0</td>
                            <td align="center">32</td>
                            <td align="center">44</td>
                            <td align="center">16</td>
                            <td align="center">97</td>
                            <td align="center">135</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">0</td>
                            <td align="center">5</td>
                            <td align="center">5</td>
                            <td align="center">14</td>
                            <td align="center">35</td>
                            <td align="center">131</td>
                            <td align="center">416</td>
                            <td align="center">5857</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">2</td>
                            <td align="center">3</td>
                            <td align="center">6</td>
                            <td align="center">16</td>
                            <td align="center">32</td>
                            <td align="center">11</td>
                            <td align="center">47</td>
                            <td align="center">47</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">2</td>
                            <td align="center">0</td>
                            <td align="center">2</td>
                            <td align="center">13</td>
                            <td align="center">30</td>
                            <td align="center">15</td>
                            <td align="center">150</td>
                            <td align="center">200</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">6</td>
                            <td align="center">10</td>
                            <td align="center">14</td>
                            <td align="center">48</td>
                            <td align="center">82</td>
                            <td align="center">84</td>
                            <td align="center">141</td>
                            <td align="center">141</td>
                            <td align="center"></td>
                            <td align="center">815</td>
                        </tr>
                        <tr>
                            <td align="center">6</td>
                            <td align="center">6</td>
                            <td align="center">10</td>
                            <td align="center">25</td>
                            <td align="center">50</td>
                            <td align="center">42</td>
                            <td align="center">105</td>
                            <td align="center">105</td>
                            <td align="center">xiangyun_80</td>
                            <td align="center">1740</td>
                        </tr>
                        <tr>
                            <td align="center">1613</td>
                            <td align="center">1563</td>
                            <td align="center">4427</td>
                            <td align="center">10735</td>
                            <td align="center">35808</td>
                            <td align="center">72077</td>
                            <td align="center">144327</td>
                            <td align="center">244153</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                        <tr>
                            <td align="center">1</td>
                            <td align="center">1</td>
                            <td align="center">2</td>
                            <td align="center">7</td>
                            <td align="center">20</td>
                            <td align="center">24</td>
                            <td align="center">64</td>
                            <td align="center">64</td>
                            <td align="center"></td>
                            <td align="center"></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</body>
</html>

css

@charset "utf-8";
*{margin:0; padding:0; border:0;}
table{border-collapse:collapse; border-spacing:0; border:0;width:100%;}
table tr td, table tr th{border:1px solid #999; padding:.5em 1em; white-space:nowrap;}
.table-first tr th, .table-first tr td{background:#F4F4F4; font-weight:bold;}
.table-container table tr td, .table-container tr th{border:0; border-bottom:1px solid #999; border-right:1px solid #999; text-align:center;}
.table-container table{border:1px solid #999; border-left:0;}
.table-two{position:relative;}
/*左边内容是表头名的宽度,根据实际情况而定,你也可以使用百分比*/
.table-first{position:absolute; left:0; top:0; width:102px;/*width:20%;*/}
/*距离左边表头的内容宽度*/
.table-second{padding-left:102px;/*width:20%*/}
/*超出部分出现滚动条*/
.table-container{width:100%; overflow-y:auto; _overflow:auto;margin: 0 0 10px;}
/*IOS滚动条*/
.table-container::-webkit-scrollbar
{
-webkit-appearance: none;
width: 14px;
height: 14px;
}
.table-container::-webkit-scrollbar-thumb
{
border-radius: 8px;
border: 3px solid #fff;
background-color: rgba(0, 0, 0, .3);
}

效果:



猜你喜欢

转载自blog.csdn.net/yzy85/article/details/81055070