Я хочу иметь таблицу, как это в HTML5:Повернуть текст 270 ° в HTML/inlineSVG без фиксированной высоты?
То есть названия из столбца 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";
Да, JavaScript, для разметки, позиции абсолютной, добавляя зависимость к JQuery 3 строк кода, и того, чтобы определить ширину в 2 местах, что означает, что я выбор между добавлением либо меньше, либо SASS в качестве зависимости. Именно то, чего я не хочу. Когда вы используете абсолютную позицию, вопрос заключается не в том, если, но только тогда, когда он ломается. Кстати, я играл с ним как 2 минуты, и как только я наложил крах на стол, и я даю ему 2-миллиметровое дополнение со дна, он сломался с 1px-разницей в Chrome. Похоже, нужно использовать дисплей inline-box, а не блок отображения. –
Кроме того, как только содержимое ячейки таблицы имеет большую ширину, чем колонка заголовка, колонка заголовка больше не находится в середине ... –
Большое спасибо за ваши саркастические комментарии. Критика моего решения несоблюдения ваших секретных неустановленных требований несправедлива. У вашего примера изображения были столбцы фиксированной ширины, поэтому я предположил, что это все, что вам нужно. И я использовал jQuery для простоты в своем ответе. Я никогда не говорил, что вы не можете использовать vanilla JS. И вещь ширины в двух местах можно избежать (я просто изменил свой пример, чтобы сделать это). –