针对人类、网络爬虫和屏幕阅读器的响应表

网络上曾经充斥着表格和利用表格进行布局的创造性方法。这些天已经过去了,表格被用于最初的目的,即数据表示。不幸的是,响应速度极快的网页设计以及不得不处理较小屏幕上的表格,导致了人们的骚动<div>一方面是汤,另一方面是创建JavaScript卡片库。

这篇文章总结了我所学到的关于HTML表的知识,以及在使用尽可能简单的CSS的同时,我用来充分利用数据表的方法。您可以在代码笔如下所示。请调整视口大小,以便切换布局。

优点

  • 性感的-设计师可能会对排版、间距、尺寸和颜色发疯。只要他们同意移动设备上的垂直表格布局,每个条目都显示为不同的信息块(类似,但不完全像维基百科上的信息表).

  • 快速-手机和桌面的标记是相同的,不需要不必要的helper元素。布局只使用CSS进行切换,不需要JavaSript。这可以防止“非样式表闪烁”,因为一旦加载JavaScript,表就不会回流。

  • 搜索引擎优化–一个好的表有一个主题列,表标题有<th>元素和带有的表标题<标题>。搜索引擎会自动检测主题列,因此您必须应用自定义样式。在我的示例中,左边的列有不同的颜色,并且用粗体书写。搜索引擎还将分析表格前后的内容,以了解表格的含义,因此请务必在标题和正文中描述它。

  • 无障碍–您可以使用<th scope=“col”><th scope=“row”>。也有几种提供表摘要的方法,但如果您需要摘要,则您的表可能不太容易访问,应进行简化。在大多数情况下,具有标题和干净的标记是可访问表所需的全部。您可以在中找到更多信息Web辅助功能教程WAI的。

与一些响应表解决方案相比,这也是一个真实的表,而不是一个看起来像表的元素集合。这对屏幕阅读器(和网络爬虫)来说很好,因为它们只需序列化您的所有<span><div>元素。

  • 灵活–我们可以免费获得表格提供的所有酷东西,例如通过垂直对齐:顶部|中部|底部;以及浏览器调整单元格大小以适应内容长度。

代码

要在手机上以键-值对的形式显示表数据,您必须将键作为自定义数据属性添加到HTML中。您可以在示例中看到这一点1200欧元</td>.

<桌子>
<标题>布鲁托/内托2015年9月</标题>
<头部>
<信托收据>
<第个>布鲁托洛恩</第个>
<第个>工资税</第个>
<第个>弗雷尔·丁斯特拉格</第个>
<第个>承揽合同</第个>
</信托收据>
</头部>
<表格主体>
<信托收据>
<td(时域) 数据-时间="布鲁托洛恩">€ 1200</td(时域)>
<td(时域) 数据-时间="工资税">€ 2,82</td(时域)>
<td(时域) 数据-时间="Sozialversicherung公司">€ 180,84</td(时域)>
<td(时域) 数据-时间="Nettolohn公司">€ 1.016,34</td(时域)>
</信托收据>
...
</表格主体>
</桌子>

为了简洁起见,我已经从示例中去掉了所有HTML类。当然,您可以也应该使用BEM或任何其他前端范例,但我们只需在这里使用元素选择器。您可以在代码笔,所以我们只需仔细查看一下媒体查询。

您会注意到,这是桌面第一种方法。它通常是我在项目中使用的唯一一个。真实的标题是隐藏的,键值对是通过伪元素创建的。这个attr()中使用的表达式内容:attr(data-th);允许您检索自定义数据属性的值,因此不必将字符串放入样式中。这是从InternetExplorer8开始的,所以不用担心。

这个<td>获取填充以为绝对定位的伪元素腾出空间,该伪元素具有相同的宽度,并根据单元格填充进行定位顶部左边.

@媒体屏幕 (最大宽度:640像素) {
头部 {
显示:没有人;
}

td(时域) {
显示:;
位置:相对的;
向左填充:50%;
水平对齐:正确的;
}

td:第一个孩子 {
字体加粗:大胆的;
}

td:之前 {
内容: 属性(数据-时间);
位置:绝对的;
顶部:10像素;
左边:10像素;
宽度:50%;
字体加粗:继承;
水平对齐:左边;
}
}

这是一个包装!希望你能用这些技巧让你的桌子变得性感、快速、搜索引擎优化、可访问和灵活。如果您发现任何错误或建议不同的方法,请随时这样做!

你可以支持手工制作通过贝宝给我买一个🍺 或者一杯o'joe。