Решение от jobjorn , описанное выше, теперь ломается в Chrome, потому что оно поддерживает режим письма с начала 2016 года, поэтому, по сути, пытается повернуть текст дважды и заканчивается неправильным размещением горизонтального текста.Насколько я понимаю, Firefox и Safari, вероятно, тоже скоро это поддержат, что приведет к их поломке.После того, как я ударился головой о стену, я исправил это, изменив CSS на:
@supports not (writing-mode:vertical-rl) {
table div.rotated {
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
white-space: nowrap;
}
}
@supports (writing-mode:vertical-rl) {
table div.rotated {
writing-mode:vertical-rl;
-webkit-transform: rotate(180deg) translate(8px,0px);
-moz-transform: rotate(180deg) translate(8px,0px);
white-space: nowrap;
}
}
Перевод в 8 пикселей был тем, что требовалось, чтобы выравнивание выглядело правильно в моем конкретном примере.Ваш пробег может варьироваться.Поворот на 180 градусов должен был сделать верхнюю часть текста лицом влево, а не вправо.Если вам это не нужно, вы, вероятно, можете пропустить преобразования во второй части.
В JavaScript вам также нужно убедиться, что вы не перемещаете источник для этих последних преобразований, так какпотребовалось только в том случае, если вы использовали преобразование для выполнения вертикальной ориентации, поэтому я обернул эту часть в условное выражение:
var supportsWM = CSS.supports('writing-mode', 'vertical-rl');
if (!supportsWM) {
newInnerDiv.css('-webkit-transform-origin', (width / 2) + 'px ' + (width / 2) + 'px');
newInnerDiv.css('-moz-transform-origin', (width / 2) + 'px ' + (width / 2) + 'px');
}