如何制作一个响应式的HTML5表格

 我来答
匿名用户
2016-12-22
展开全部
举个实现HTML5响应式表格的实例,仅供参考:

HTML结构如下:
<table id="miyazaki">
<caption>The Films of Miyazaki</caption>
<thead>
<tr><th>Film<th>Year<th>Honor
<tbody>
<tr>
<td data-th="Film">My Neighbor Totoro
<td data-th="Year">1988
<td data-th="Honor">Blue Ribbon Award (Special)
<tr>
<td data-th="Film">Princess Mononoke
<td data-th="Year">1997
<td data-th="Honor">Nebula Award (Best Script)
<tr>
<td data-th="Film">Spirited Away
<td data-th="Year">2001
<td data-th="Honor">Academy Award (Best Animated Feature)
<tr>
<td data-th="Film">Howl’s Moving Castle
<td data-th="Year">2004
<td data-th="Honor">Hollywood Film Festival (Animation OTY)
</table>
注意代码中的data属性,每一个单元格的data属性都与表格的header相对应。
CSS样式
表格基本的CSS样式如下:
table#miyazaki caption {
font-size: 2rem; color: #444;
margin: 1rem;
background-image: url(miyazaki.png), url(miyazaki2.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center left, center right;
}
table#miyazaki {
border-collapse: collapse;
font-family: Agenda-Light; font-weight: 100;
background: #333; color: #fff;
text-rendering: optimizeLegibility;
border-radius: 5px;
}
table#miyazaki thead th { font-weight: 600; }
table#miyazaki thead th, table#miyazaki tbody td {
padding: .8rem; font-size: 1.4rem;
}
table#miyazaki tbody td {
padding: .8rem; font-size: 1.4rem;
color: #444; background: #eee;
}
table#miyazaki tbody tr:not(:last-child) {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
下面是响应式表格的CSS代码:
@media screen and (max-width: 600px) {
table#miyazaki caption { background-image: none; }
table#miyazaki thead { display: none; }
table#miyazaki tbody td { display: block; padding: .6rem; }
table#miyazaki tbody tr td:first-child { background: #333; color: #fff; }
table#miyazaki tbody td:before {
content: attr(data-th); font-weight: bold;
display: inline-block; width: 6rem;
}
}
media query代码中隐藏表格的头部单元,并且将每一个单元格的data-th作为标签显示在单元格内容的前面。每一行的第一个单元格都设置了特别的背景色和前景色,使之更为清晰。
扩展
你现在可以缩放浏览器来看看效果,非常不错。但是上面的代码是不可扩展的:要添加一个新行必须手动为每个单元格添加一个data-th属性。要想做到自动化,可以在服务器端实现,如PHP。也可以通过javascript来实现它。
首先,将整个表格都进行简化:
<table id="miyazaki">
<caption>The Films of Hayao Miyazaki</caption>
<thead>
<tr><th>Film<th>Year<th>Honor
<tbody>
<tr>
<td>My Neighbor Totoro
<td>1988
<td>Blue Ribbon Award (Special)
<tr>
<td>Princess Mononoke
<td>1997
<td>Nebula Award (Best Script)
<tr>
<td>Spirited Away
<td>2001
<td>Academy Award (Best Animated Feature)
<tr>
<td>Howl’s Moving Castle
<td>2004
<td>Hollywood Film Festival (Animation OTY)
</table>
然后在文档的底部添加下面的javascript代码:
<script>
var headertext = [];
var headers = document.querySelectorAll("#miyazaki th"),
tablerows = document.querySelectorAll("#miyazaki th"),
tablebody = document.querySelector("#miyazaki tbody");
for(var i = 0; i < headers.length; i++) {
var current = headers[i];
headertext.push( current.textContent.replace( /\r?\n|\r/,"") );
}
for (var i = 0, row; row = tablebody.rows[i]; i++) {
for (var j = 0, col; col = row.cells[j]; j++) {
col.setAttribute("data-th", headertext[j]);
} }
</script>
上面的代码的意思是:获取每一个<th>中的文本内容,然后分别剔除它们的回车和换行符。然后将这些文本分别添加到适当的单元格的data属性上,添加的规则与CSS样式的规则相一致。(使用setAttribute要比dataset要好,后者只有在IE 11中得到支持。)
无语人未休
2018-05-08 · 超过15用户采纳过TA的回答
知道答主
回答量:48
采纳率:56%
帮助的人:11.9万
展开全部
这个看你用插件不?

插件推荐bootstrap
自己手写,一般需要用到@media screen and (最大屏幕宽度max-width或者最小屏幕宽度min-width),进行样式匹配
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gs...3@sohu.com
2018-05-08 · TA获得超过167个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:27.6万
展开全部
你这个给点RMB估计人家才给你实现,哈哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
携壶且醉dT
2018-05-08 · 超过11用户采纳过TA的回答
知道答主
回答量:30
采纳率:68%
帮助的人:9.3万
展开全部
用百分比布局或者用@media screen响应式布局
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
辰宜科技
2018-05-08 · TA获得超过249个赞
知道小有建树答主
回答量:154
采纳率:85%
帮助的人:15.6万
展开全部
最快就是用框架了,兄弟
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
侍抒怀0HG
2016-12-22 · TA获得超过7090个赞
知道大有可为答主
回答量:2091
采纳率:100%
帮助的人:179万
展开全部
使用Bootstrap的表格类,自适应表格
参考资料:http://www.runoob.com/bootstrap/bootstrap-tables.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式