Размещаем текст по окружности

Нет простого и стандартного способа разместить текст по кругу (или по другой кривой). Но задачу можно решить! В данном уроке будет описан один из способов. Однако,  для решения будет использоваться CSS3 и JavaScript и в старых браузерах поддерживаться не будет. Если вам нужно обеспечивать обратную совместимость, то лучше воспользоваться изображениями с текстом в атрибуте alt (или отслеживать поддержку и включать описанный метод в современных браузерах).

 

Наш пример

Для описания техники сделаем вот такой знак:

 

Анатомия процесса

Рассмотрим простую фразу:

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

Выравниваем ширину всех символов с помощью использования моноширинного шрифта:

Делаем прямоугольники символов длинными, как спицы велосипедного колеса:

Затем складываем все прямоугольники один над другим в стопочку:

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

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

 

Техническая реализация

Для того, чтобы манипулировать каждым символом, поместим его в отдельный элемент. Такую операцию для нас может проделать плагин jQuery Lettering.js.

То есть у нас в коде будет:

<h1>Учебные материалы сайта</h1>

Загружаем jQuery и Lettering, а затем запускам плагин:

И получаем измененную структуру DOM:

<h1>
  <span class="char1">У</span>
  <span class="char2">ч</span>
  <span class="char3">е</span>
  <span class="char4">б</span>
  <span class="char5">н</span>
  <!-- И так далее -->
</h1>

Такой метод хорошо работает с моноширинными шрифтами. Даже если вы будете имитировать моноширинность с помощью установки одинаковой ширины элементов span, пространство между символами будет разным, что выглядит коряво. Можно в ручную править кернинг (занятие для упертых личностей с огромным резервом времени).

Каждому элементу span мы задаем высоту, позиционируем их в одну точку и устанавливаем центр поворота в нижней части элемента.

h1 span {
  font: 26px Monaco, MonoSpace;
  height: 200px;
  position: absolute;
  width: 20px;
  left: 0;
  top: 0;
  transform-origin: bottom center;
}

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

.char1 { transform: rotate(6deg); }
.char2 { transform: rotate(12deg); }
.char3 { transform: rotate(18deg); }
/* и так далее */


Теперь вспомним, что нужно еще использовать префиксы производителей браузеров. Так что код получается довольно массивным. А с помощью SASS и  Compass можно уложиться в три строки:

@for $i from 1 through 100 
  .char#{$i} 
    +transform(rotate(($i*6)+deg))

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/movt-qheAiA/lessons.php

Читать комменты и комментировать

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



Защитный код
Обновить

Размещаем текст по окружности | | 2012-07-15 16:54:51 | | Статьи Web-мастеру | | Нет простого и стандартного способа разместить текст по кругу (или по другой кривой). Но задачу можно решить! В данном уроке будет описан один из способов. Однако,  для решения будет использоваться | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: