Как сделать вертикальный текст в css
Перейти к содержимому

Как сделать вертикальный текст в css

  • автор:

Вертикальный текст

Сделать вертикальную надпись (заголовок, пункт меню, сообщение и т.п.), при чем надпись должна быть текстом, чтобы можно было ее менять.

Решение

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

Как ни странно, ни один из «продвинутых» браузеров в настоящее время данное свойство не признают. И что еще более странно, его понимает Interner Explorer! И чтоб вообще добить — начиная с версии 5.5! Это первый случай в моей практике. когда решение нужно искать не для IE, а для остальных браузеров.

каждый браузер выбрал свою дорогу

Разработчики остальных браузеров, проигнорировав рекомендации стандартов, пошли другим путем. При чем, каждый из них своим. Mozilla внедрила -moz-transform, Opera — -o-transform, webkit как уже можно было догадаться — -webkit-transform. Зачем было столько свойств плодить, мне не понятно. Ну не будем такими придирчивыми, и на этом им спасибо. Следует отметить, что эти три свойства позволяют повернуть текст на произвольный угол (значением свойств является угол — и это плюс), в отличие от writing-mode, который ныне способен отобразить текст только в двух положениях: горизонтально (значение lr-tb) и вертикально (tb-rl).

Теперь, чтобы развернуть надпись вертикально нужно:

  • перечислить все варианты поворота текста
  • указать фиксированные размеры контейнера с текстом (ширину и высоту). Без них блок с текстом может вести себя непредсказуемо

Чтобы посмотреть как поворот повлияет на положение поворачиваемого элемента в потоке, добавим до и после него по блоку.

Текст, который будем поворачивать

#verticalText

Демо пример. Смотрим результат и лично меня он не удовлетворяет:

вертикальный текст в IE

Вертикальный текст в IE

В IE отработало как нужно — текст повернулся, блок остался на своем месте. Вывод: доработок никаких не требуется.

вертикальный текст в продвинутых браузерах

Вертикальный текст в Firefox, Opera 10.51, Safari 3.5, Chrome

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

вертикальный текст в Opera версии ниже 10.51

вертикальный текст в Opera версии ниже 10.51 и Firefox версии ниже 3.5

Эти браузеры придется отлавливать с помощью Javascript (об этом скрипте подробней скоро напишем) и поворачивать текст с помощью SVG (об этом методе подробней в следующем материале). Т.к. в SVG нет автоматического переноса строк, поэтому повернутый текст будет в одну строку. Это придется учесть и динамически изменить размер блока так, чтобы текст не обрезался.

И так, имеем тот же HTML код:

Текст, который будем поворачивать

Стили для продвинутых браузеров и для IE отличаются. Чтобы разграничить воспользуемся условными комментариями:

  


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

IE6-8, Firefox 3.5+, Opera 10.5+, Safari 3.5+, Chrome 3+

вертикальный текст в старых браузерах

Firefox версии ниже 3.5, Opera версии ниже 10.5

Преимущества

  • текст является текстом
  • текст можно выделить и скопировать
  • доступна возможность многострочного текста с автоматическим переносом строк (кроме некоторых старых версий браузеров)

Недостатки

  • для более старых версий Opera и FF текст будет одной строкой, плюс им потребуется включенный Javascript
  • текст может начинаться только от одного угла родительского блока — правого верхнего
  • CSS код не походит валидацию — свойства -moz-transform, -webkit-transform, -o-transform отстуствуют в спецификациях

Выводы

Пользователей, которые используют более старые версии Firefox и Opera немного и каждый день таких становится меньше. Поэтому выше описанный прием я считаю можно использовать в проектах. И хоть метод не идеален и не гибок, как приятно все же осозновать что ты можешь реализовать вертикальный текст!

По теме

Более универсальный метод — «Текст под углом»

Материалы

  • W3C :: CSS3 Text Module
  • MDC :: -moz-transform
  • Dev.Opera :: CSS3 transitions and 2D transforms
  • MSDN :: writingMode Property
  • CSS приемы
    • «Дергание» сайта
    • background position со смещением
    • clearfix
    • CSS прозрачность
    • CSS хаки
    • RGBA — CSS полупрозрачность
    • Затемнение фона
    • Кроссбраузерный

    • Обнуление отступов
    • Порядок описания ссылок
    • Прелоад изображений
    • Сброс стилей
    • Сокращения в CSS
    • Убираем рамку с эл-ов в фокусе
    • Условные CSS
    • Условные комментарии
    • Поворот вокруг своей оси
    • Поворот объекта вокруг свой
    • Resize для textarea в Safari и Chrome
    • Блочная верстка форм
    • Кастомные checkbox и radio на CSS
    • Кросбраузерные input и textarea
    • Кроссбраузерный button
    • Нестандартные checkbox
    • Нестандартные radio
    • Нестандартные select
    • Нестандартные select multiple
    • Нестандартные поля выбора файла
    • Нестандартные текстовые поля
    • О кроссбраузерности placeholder
    • Отступы у checkbox и radio
    • Оформление input type=search
    • Резиновая кнопка
    • Текст в поле type="password"
    • Блоки равной высоты в строке
    • Колонки равной высоты
    • Прижимаем подвал к низу
    • Ресайз окна: потомок перерос родителя
    • Сайт в центре экрана
    • Фиксированная колонка + резиновая + clear:both
    • CSS 3D лента
    • CSS3 всплывающие подсказки
    • IMG внутри блока — убираем странный отступ
    • IMG: меняем рисунок при наведении
    • Аккордеон на чистом CSS3
    • Валидный target="_blank"
    • Верстка рейтингов
    • Верстка содержания
    • Вставка спецсимволов в генерируемый контент
    • Вставка стрелок
    • Индивидуальные стили для li. Избавляемся от классов.
    • Масштабируемая картинка в резиновой колонке
    • Многоколоночный текст на CSS3
    • Нестандартное подчеркивание
    • Отменяем обтекание текстом картинки
    • Оформление внешних ссылок
    • Оформление изображений по align
    • Оформляем «ol»
    • Правильные анонсы новостей
    • Список определений. Требуем невозможного.
    • Firefox
      • -moz-box-shadow и -moz-border-radius - это кошмар CPU
      • Позиционирование внутри button
      • Ширина input type=file
      • Onload в IE9
      • z-index в IE6-7
      • Баг с текстом при применении Alpha фильтра
      • Масштабирование и PIE
      • Отступы в кнопках в IE6-7
      • Проблемы с em
      • Эмуляция after и before для IE 6-7
      • Эмуляция data:URL для IE6-7 — используем MHTML-включение
      • hasLayout
      • Max-width
      • Min-height
      • Min-width
      • Min-width и max-width одновременно
      • PNG и прозрачность
      • Высота блока 1px
      • Дублирование символов
      • Дырка под футером
      • Как перекрыть select
      • Обрезка контента c отрицательным margin в IE6
      • Отступы плавающих блоков
      • Проблемы с размерами блоков
      • Псевдокласс :first-child
      • Псевдокласс hover в IE 6
      • Селектор потомков >
      • Селекторы атрибутов [type=…]
      • Сестринский селектор
      • Смещение на 1px
      • Ссылки с вложением
      • Устраняем flickering
      • Эмуляция position:fixed
      • overflow-y
      • Не подгружаются шрифты @font-face
      • Проблема с oveflow: hidden
      • Скругление img
      • HTML шаблон для мобильных устройств
      • Выпадающее меню на CSS
      • Выравнивание навигации из блоков по центру
      • Выравнивание навигации по середине
      • Резиновое меню
      • Резиновое меню из блоков
      • Убираем класс для первого элемента
      • Box-sizing: переключаем блочную модель
      • inline-block: простое свойство для непростых задач
      • Вертикальная позиция для строчного элемента
      • Вертикальное выравнивание
      • Выравнивание по центру с position: absolute
      • Вычисляемые отступы
      • Два в одном: позиция + размеры
      • Долой отступы между строчными элементами (и блоками)
      • Обходим схлопывание margin
      • Центрирование картинки в блоке
      • Центрирование резинового блока по горизонтали
      • Активация flash
      • Вставка flash в HTML
      • Вставляем ролик с YouTube
      • Как отключить flash
      • Как перекрыть flash
      • Параметры для вставки объектов
      • Ссылка на flash объекте
      • CSS треугольники
      • Аппаратное ускорение анимации
      • Встраиваем изображения — data:URL
      • Градиент: CSS3 против CSS2 + картинка
      • Лесенка спрайтов — сложный случай поклейки
      • На одну картинку меньше. Спецсимвол ×
      • Необычные тени с CSS3 box-shadow
      • Оптимизация Google Web Fonts
      • Оптимизация фонов с помощью Canvas
      • Проблемы с border-radius
      • Псевдоэлемент before для маркера списка
      • Скругление углов. Обзор методов.
      • Сокращаем HTML5 код
      • Спрайты: меньше картинок — больше скорость
      • Тень для блока
      • Фигуры с углами на CSS
      • Шаблоны градиентов
      • Дополнение Skype
      • Подключить favicon
      • Профилактика сайта: максимально простое оповещение
      • Ссылки на skype
      • @font-face в деталях
      • Cufon — нестандартный шрифт средствами JS
      • font-size: 100.01% для html
      • Безопасные шрифтовые CSS стеки для англоязычных текстов
      • Безопасные шрифтовые CSS стеки для рунета
      • Безопасные шрифты
      • Вертикальный текст
      • Используем псевдоэлемент :first-letter
      • Контур для текста
      • Нестандарный шрифт. Быть ему или нет?
      • Нестандартный шрифт средствами CSS
      • Плавающий :first-letter
      • Подмена текста изображением
      • Соответствия шрифтов Windows, Mac и Unix/Linux
      • Строчный :first-letter
      • Текст под углом
      • Текст с CSS градиентом
      • Тень для текста
      • Эффект отражения

      Как сделать вертикальный текст в css

      Здравствуйте, дорогие читатели нашего блога! В данное статье мы расскажем как сделать вертикальный текст в Elementor с минимальными усилиями.

      Первый способ. CSS-свойство writing-mode

      Css-свойство writing-mode работает во всех браузерах, кроме Internet Explorer. Данный способ имеет свои недостатки, которые мы рассмотрим немного позже.

      Итак, приступим. Добавим для примера виджет Заголовок на страницу редактирования.

      Вертикальный текст в Elementor

      Далее для заголовка необходимо прописать css-свойство writing-mode в пользовательских CSS (Вкладка «Расширенные => Пользовательские CSS»).

      selector

      Вот что мы получим:

      как сделать вертикальную надпись в Elementor

      Текст стал вертикальным.

      Свойство writing-mode имеет несколько значений:

      writing-mode: horizontal-tb; writing-mode: horizontal-bt; writing-mode: vertical-rl; writing-mode: vertical-lr;

      Основным недостатком первого способа является невозможность поворота текста против часовой стрелки.

      Выравнивание вертикального текста по горизонтали и вертикали в Elementor.

      Как видим на примере изображения выше, вертикальный текст прилип к правому краю секции и все попытки изменить горизонтальное выравнивание элементов внутри колонки при помощи Elementor не приносят результата — текст остается справа. Выравнивание текста по вертикали работает.

      vertikalnyj tekst v elementor 003

      Чтобы настройки горизонтального выравнивания заработали, для элемента (в нашем случае заголовка) нужно изменить настройки позиционирования на вкладке «Расширенные => Позиционирование => Ширина => Друг за другом»

      vertikalnyj tekst v elementor 004

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

      vertikalnyj tekst v elementor 005vertikalnyj tekst v elementor 006vertikalnyj tekst v elementor 007

      Второй способ. CSS-свойство transform

      Более универсальный и функциональный способ — css-свойство transform (обязательно ознакомьтесь с этим интересным свойством подробнее), ведь оно позволяет поворачивать текст и по часовой и против часовой стрелки.

      Давайте добавим еще один заголовок и пропишем в его свойствах следующее:

      selector

      vertikalnyj tekst v elementor 008

      Значения указываются в градусах, допускаются как положительные, так и отрицательные значения.

      CSS-свойство transform vertikalnyj tekst v elementor 010

      Недостатком данного способа является выход вертикально текста за пределы секции и его трудно правильно разместить на странице.
      Мы советуем использовать его в паре с первым способом.

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

      Уникальные тексты и изображения
      с помощью
      Искусственного Интеллекта
      на русском языке.

      Перейдите в Telegram и возьмите бесплатный пакет символов для тестирования сервиса
      10 000 символов бесплатно!

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

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