Как повернуть текст на 90 градусов css
Перейти к содержимому

Как повернуть текст на 90 градусов css

  • автор:

П овёрнутый текст

Некоторое время назад я уже делился этим решением в соцсетях, но на этот раз хочу написать о нём немного подробнее.

Задача: получить повёрнутый на 90 градусов текст.

Проблема: широко известно, что при использовании transform , блок ведёт себя аналогично сдвигу через position:relative — продолжает занимать место в потоке по состоянию до трансформации, так что, по факту, изменение происходит только визуальное.

Однако, довольно часто можно захотеть повернуть блок так, чтобы этот поворот влиял и на поток. Например, если мы захотим выстроить несколько вертикальных блоков в ряд, подобно книгам на полке, или если мы захотим использовать повёрнутый текст в качестве заголовков таблицы — в этих случаях нам нужно будет гарантировать, что высота станет равна ширине блока, в то время как ширина — высоте.

У меня получилось решить эту задачу с одним допущением: нужно знать высоту поворачиваемого элемента. В этом случае реализация становится очень простой:

    Нам понадобится дополнительный элемент. HTML каждого блока будет примерно таким:

.rotated-text
.rotated-text__inner
.rotated-text__inner:after

В итоге мы получаем квадратный элемент, обрезаемый враппером до ширины своей прошлой высоты, такой элемент можно использовать в любом контексте, для него будут работать разные свойства вроде text-align или vertical-align , так что можно сказать, мы получили «честный» повёрнутый блок.

Ну и несколько живых примеров:

З аголовки таблиц

Очевидный пример — компактные по ширине заголовки таблиц.

First th Some cell And another
Second th 12 12314
Third th 12 12314
First th The Second th Third th
2 4 42
12 4 234
13 100 0

«Книжная полка»

Так как повёрнутые блоки получаются «честными», то, если выстроить их в ряд, высота ряда будет равна высоте самого большего из них:

  • The Idiot
  • The Little Prince
  • Roadside Picnic
  • Flowers for Algernon
  • A Book of Five Rings
  • The Glass Bead Game
  • The Hitchhiker’s Guide to the Galaxy
  • The Hobbit
  • One Flew Over the Cuckoo’s Nest
  • 1984
  • Mother Night
  • Speaker for the Dead
  • The Day of the Triffids

Ещё раз: мы должны знать высоту блока, так что, если понадобится поворачивать таким образом многострочные блоки, нужно будет соответствующим образом изменять ширину их врапперов.

Кроме того, возможно, этот метод можно заставить работать и в IE — применив матричный фильтр для поворота и добавив элемент в замену псевдоэлементу. Мне лень всё это делать, но вы можете всегда попробовать это сделать сами 🙂

Как повернуть текст на 90 градусов в CSS кросс-браузерно?

Для задания вертикальной ориентации текста, применимой в большинстве браузеров, используется свойство CSS writing-mode . Данное свойство при значении writing-mode: vertical-lr; обеспечивает отображение текста в вертикальном направлении. Приведён ниже простой пример его использования:

Скопировать код

.vertical-text < writing-mode: vertical-lr; /* Прощай, горизонтальное однообразие! */ >

После этого добавьте класс в ваш HTML-тег:

Скопировать код

Таким образом, достигается совместимость вертикального текста с различными браузерами.

Расширяем возможности свойства writing-mode

Свойство writing-mode безусловно полезно для изменения направления текста, однако иногда возникает необходимость повернуть текст на определённый угол, чтобы добиться интересного визуального эффекта. Тогда можно использовать следующий код:

Скопировать код

.vertical-text-rotated < transform: rotate(90deg); /* Поворачиваем текст на 90 градусов! */ transform-origin: center; >

Чтобы сохранить совместимость со старыми версиями Internet Explorer (да, их тоже стоит учесть):

Скопировать код

.vertical-text-rotated < filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); /* Помогаем повернуться старому другу IE! */ >

Используйте caniuse.com для проверки поддержки свойств и не забывайте про вендорные префиксы:

Скопировать код

.vertical-text-rotated < -webkit-transform: rotate(90deg); /* Привет, WebKit! */ -moz-transform: rotate(90deg); /* Вперёд, Mozilla! */ -ms-transform: rotate(90deg); /* Не забываем о старом верном Microsoft */ -o-transform: rotate(90deg); /* И Opera тоже в деле */ transform: rotate(90deg); /* Для новаторов мира браузеров */ >

Точность и совместимость

Настройка позиционирования текста

Если вам нужно повернуть только одно слово или букву, хорошим решением будет использование строчных элементов:

Скопировать код

Несколько

Скопировать код

.rotated < display: inline-block; transform: rotate(90deg); /* Небольшие изюзминки добавляют тексту фишечки! */ >

SVG для детального позиционирования

Если требуется высокая точность оформления, то подойдёт SVG для размещения текста:

Скопировать код

 Наш надёжный вертикальный союзник 

SVG позволяет применять атрибуты text-anchor и alignment-baseline для точного выравнивания и поворота текста.

Старые версии IE требуют особого внимания

Даже Internet Explorer версий 6-8 заслуживает нашего внимания. Для этих версий браузера условные комментарии и свойство filter могут служить решением проблем с совместимостью:

Скопировать код

 


Горизонтальный текст: Чтение идёт -> �� ------------------------------ Вертикальный текст: �� Т е к с т | Вверх мы идём!

С помощью CSS мы меняем привычное восприятие и переворачиваем представление:

Скопировать код

.vertical-text

В итоге вертикальный текст поднимается вверх, бросая вызов всем правилам, аналогично тому, как наши стили CSS сопротивляются стандартной горизонтальной разметке. ����

Продвинутые приёмы поворота текста

Применение writing-mode для ортогонального управления потоком макета

Переключение между writing-mode: vertical-lr; и writing-mode: vertical-rl; служит для создания ортогональных потоков. В сочетании с text-orientation: upright; это обеспечивает сохранение вертикального положения символов.

Позиционирование после поворота

После поворота текста может потребоваться корректировки. Для этого можно применить абсолютное позиционирование или flexbox для правильного вспомогательного расположения элементов:

Скопировать код

.absolute-positioned-text < position: absolute; /* Поднимаемся на новый уровень с абсолютно позиционированным текстом! */ top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(90deg); >

Особенности дизайна для мобильных устройств

Не стоит забывать о мобильных пользователях! Разные способы ввода и ориентации экрана требуют адаптивного дизайна. Flexbox и grid идеально подходят для создания гибких макетов с вертикальным текстом.

Полезные материалы

  1. CSS writing modes – MDN Web Docs — подробный гайд по режимам письма в CSS, включая вертикальные текстовые блоки.
  2. Can I use. Support tables for HTML5, CSS3, etc — проверка совместимости браузеров для свойства writing-mode в CSS.
  3. CSS transform property – w3schools.com — определения и особенности свойства CSS transform, незаменимого при работе с вертикальным текстом.
  4. Transform | CSS-Tricks — глубокий анализ свойства CSS transform с практическими примерами его применения.
  5. CSS Writing Modes Level 3 – W3C — ознакомление с официальной спецификацией W3C по режимам письма в CSS, содержащей всесторонние сведения о вертикальном тексте.
  6. Examples of vertical text – CodePen — огромное количество живых примеров на CodePen, демонстрирующих различные способы использования вертикального текста в CSS.

Как повернуть текст на 90 градусов css

Для того чтобы повернуть текст на 90 градусов, в CSS существуют свойства: transform и transform-origin , с помощью которых мы задаем направление текста и угол поворота. Например:

 class="wrapper">  class="text-block"> Hello World!   
.wrapper  width: 300px; margin: 80px; > .text-block h1  transform-origin: top left; transform: rotate(90deg); > 

Как повернуть текст в html

Для поворота текста в HTML можно использовать CSS свойство transform с значением rotate . Например, чтобы повернуть текст на 90 градусов по часовой стрелке, можно использовать следующий CSS код:

 .rotate  transform: rotate(90deg); >   class="rotate">Повёрнутый текст 

Также можно использовать значения rotateX и rotateY для поворота текста вокруг осей X и Y соответственно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *