Иногда необычные дизайнерские решения вынуждают верстальщика прибегать к таким же нестандартным решениям при расположении текста. К примеру, повернуть один из текстовых элементов на определенный угол. В данной статье будут рассмотрены несколько простых решений этой задачи.
Замена текста картинкой
Наиболее примитивным решением поставленной задачи станет использование картинки. Средствами небезызвестной всем программы Adobe Photoshop текст без труда поворачивается на любой угол. Как вы понимаете, не нужно много ума, чтобы воспользоваться данным методом.
В некоторых ситуациях другим способом воспользоваться невозможно, однако в большинстве случаях отходят от использования картинки. Это объясняется рядом недостатков, которые сопутствуют указанной методике:
- Невозможность пользователю копировать информацию, в указанном контейнере;
- Сложность процедуры внесения исправлений в текстовую часть элемента;
- Увеличивается трафик на сервере сайта;
- Рост обращений к серверу при обновлении ресурса.
Несмотря на то, что нашлось такое количество негативных сторон применения картинки, у метода есть пару положительных эффектов.
- Кроссбраузерность — отсутствие проблем при отображении в разных браузерах.
- Высокая способность в позиционировании изображения.
Все-таки в данном случае отрицательные стороны перевешивают. Советую Вам обратиться к другим решениям.
Использование свойства CSS transform
Применение этого способа гораздо выше стоит в сравнении с изображением. Существенную разницу формирует гибкость в редактировании текста и возможность выделять и копировать содержимое повернутого контейнера. Главным камнем преткновения для развития этой методики была кроссбраузерность. Сейчас достигли неплохих результатов на этом фронте, что позволяет без проблем применять свойство transform.
Суть работы свойства заключается в разбитии плоскости по градусам. В следствие этого при указании определенного угла контейнер займет соответствующее положение. Стоит отметить, что свойство в чистом виде не применяется. Ему должны сопутствовать вендорные свойства, которые, собственно, и обеспечивают высокий показатель кроссбраузерности.
Важно отметить, что меняет положение не текст внутри блока, а именно сам блок, к которому обращено свойство через селектор класа или каким-либо другим способом. Ниже представлен пример использования метода
CSS
.conteiner { -moz-transform: rotate(-45deg); -webkit-transform: rotate(-45deg); -o-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); }
По итогу получим примерно такую картину:
Обращаюсь к такому свойству, оформление без проблем будет выводится в Firefox, Opera, Internet Explower и других вебкит-браузерах.
Обращение через Javascript
Суть процесса полностью аналогична рассмотренному перед этим методом. Для его реализации необходим минимум знаний js-кода, математики и разбираться в фильтре Matrix.
Javascript
var deg2radians = Math.PI * 2 / 360, deg = -4; rad = deg * deg2radians, costheta = Math.cos(rad), sintheta = Math.sin(rad); jQuery('.rotatedBlock').css({ filter: 'progid:DXImageTransform.Microsoft.Matrix (M11='+costheta+', M12='+(-1)*sintheta+', M21='+sintheta+', M22='+costheta+', SizingMethod="auto expand", enabled=true)'});
По итогу получим в браузере ту же картину, что и при использовании свойства transform.
Даже если Вы ни символа не понимаете в этой записи — не беда. Для работы с этим кодом достаточно понимать, что во второй строчке прописывается значение угла, его вы подставляете под себя, остальное — просто копируете без изменений.
Особенности использования Javascript и CSS
Эти два метода имеют несколько незначительных отличий в принципе работы, знать и учитывать которые очень важно.
Первое отличие основывается на разности высоты блока и его положения. Выход из ситуации достаточно простой и заключается в использовании свойства margin. Отступами мы выставляем блок на нужный уровень и позицию. Прочие разногласия в позиционировании можно устранить присвоением блоку значение абсолютного позиционирования, что тоже эффектно действует.
Более сложный и индивидуальный подход основывается на применении свойства transform-origin. Суть этой методики будет описана в последующих статьях.
Следующее отличие кроется в сущности самого поворота. При использовании js-кода точка поворота находится на краю блока. Во втором способе эта точка расположена в центре элемента. Для упрощения понимания смотрим на картинку ниже