【发布时间】:2016-03-08 08:27:18
【问题描述】:
我想在 HTML5 中有这样的表格:
也就是说,第 2 列的标题旋转 270°,垂直对齐底部,水平居中,黑色背景上的白色字体,但没有为标题行/列设置明确的高度,最好没有诉诸使用 JavaScript 进行布局......
现在,直到现在,我都是通过使用服务器端图像生成来实现的,例如 <img src="handler.ashx?text=bla&fg=FFFFFF&bg=000000" />
不幸的是,这会禁用使用CTRL + F 搜索文本,这是相当不幸的,因为有很多组(数百个)。
现在有一些关于 SO 的帖子,例如
Rotate HTML SVG Text by 270 degrees
How to use CSS Rotate() in TH Table Tags
Rotating table header text with CSS transforms
https://jsfiddle.net/t5GgE/1/
但是它们要么明确地(或间接地)设置高度,要么在表头中使用背景颜色时无法正常工作。
现在我所拥有的是:
https://jsfiddle.net/kn46f38n/6/
垂直对齐底部不能正常工作,高度不能自动调整的问题(除非我添加了画布图像)。
所有这些都令人沮丧,这基本上意味着唯一的进展是用画布替换处理程序,这减轻了服务器的负担,但在可搜索性方面没有任何进展,最糟糕的是,使用 JS 进行布局虽然仍然有不支持画布的浏览器。
真的没有办法在 HTML/inlineSVG 中做到这一点,而不必设置显式高度(任何类型的高度,如包括变换原点)并且不必求助于 javascript 吗?
没有 jQuery:
var maxH = 0;
// Find the column label with the tallest height
var hdrs = document.querySelectorAll(".hdr")
for (i = 0; i < hdrs.length; i++)
{
var bbox = hdrs[i].getBoundingClientRect();
if (bbox.height > maxH)
maxH = bbox.height;
}
// Make all the label cells that height
var cols = document.querySelectorAll(".col")
for (i = 0; i < cols.length; i++)
cols[i].style.height = maxH + "px";
【问题讨论】: