Забавы с размытием текста

Сделать текст размытым очень просто. Используем прозрачный цвет и установки тени:

.blurry-text {
   color: transparent;
   text-shadow: 0 0 5px rgba(0,0,0,0.5);
}

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

.textshadow .blurry-text {
   color: transparent;
   text-shadow: 0 0 5px rgba(0,0,0,0.5);
}

Цвет тени - единственное, что остается видимым, поэтому надо позаботиться о достаточном контрасте.

Это основы. Теперь перейдем к более интересным вещам.

 

По-буквенно

С помощью скрипта  Lettering.js можно провести инъекции элементов span в слово. Так:

станет

<h2>
  <span>S</span>
  <span>m</span>
  <span>o</span>
  <!-- Вы уже поняли идею? -->
</h2>

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

Сначала делаем анимацию для браузеров WebKit от четкого текста к размытому:

@-webkit-keyframes blackblur {
  from { text-shadow: 0 0 72px black; color: transparent; }
  to   { text-shadow: 0;              color: black;       }
}

Теперь можно вызвать анимацию для каждой отдельной буквы. Чем дальше буква стоит от начала слова, тем больше задержка.

.smokemonster span:nth-of-type(1)  { -webkit-animation: blackblur 2s       1 alternate; }
.smokemonster span:nth-of-type(2)  { -webkit-animation: blackblur 2s 0.1s  1 alternate; }
.smokemonster span:nth-of-type(3)  { -webkit-animation: blackblur 2s 0.15s 1 alternate; }
.smokemonster span:nth-of-type(4)  { -webkit-animation: blackblur 2s 0.2s  1 alternate; }
.smokemonster span:nth-of-type(5)  { -webkit-animation: blackblur 2s 0.25s 1 alternate; }
.smokemonster span:nth-of-type(6)  { -webkit-animation: blackblur 2s 0.3s  1 alternate; }
.smokemonster span:nth-of-type(7)  { -webkit-animation: blackblur 2s 0.35s 1 alternate; }
.smokemonster span:nth-of-type(8)  { -webkit-animation: blackblur 2s 0.4s  1 alternate; }
.smokemonster span:nth-of-type(9)  { -webkit-animation: blackblur 2s 0.45s 1 alternate; }
.smokemonster span:nth-of-type(10) { -webkit-animation: blackblur 2s 0.5s  1 alternate; }
.smokemonster span:nth-of-type(11) { -webkit-animation: blackblur 2s 0.55s 1 alternate; }
.smokemonster span:nth-of-type(12) { -webkit-animation: blackblur 2s 0.6s  1 alternate; }


Достаточно скучный эффект. Однако надо помнить, что здесь используется только CSS и никакого языка программирования.

 

Добавим программирования

Допустим, мы не знаем, сколько символов будет содержаться в надписи. Или нужно автоматически устанавливать цвет. Или случайным образом устанавливать размытие. Для решения таких задач CSS не подходит  и нужно использовать JavaScript. Также будем использовать jQuery.

jQuery может устанавливать тень текста следующим образом:

$(".blur").css({
  'text-shadow': '2px 2px 5px green'
});

К счастью, text-shadow не имеет набора префиксов производителей браузеров. Но здесь мы все еще находимся в ущербном положении. Что если надо установить только смещение, или размытие, или цвет? Нет специального свойства CSS для таких потребностей. Нам придется повторять всю строку, чтобы сделать изменения в одном пункте. Мы не сможем провести анимацию!

В таком случае на помощь приходит проект jquery-cssHooks . Он расширяет возможности  jQuery управления отдельной частью сложного свойства CSS (таких как text-shadow, box-shadow, border-image, transform, и так далее).

Нужно загрузить скрипты (порядок имеет значение)...

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script src="/js/color.js"></script>
<script src="/js/textshadow.js"></script>

и мы получаем возможность получать/изменять/анимировать отдельную часть свойства:

$(".blur").css({
  'textShadowColor': 'red'
});

$(".blur").animate({
  'textShadowBlur': 50
});

Сделаем анимацию размытия случайным образом случайного символа со случайным уровнем насыщенности цвета.

var text = $("#some-word"),
    // Предполагаем, что функция lettering() уже была вызвана для данного элемента
    numLetters = text.find("span").length; // Сколько символов?

function randomBlurize() {

  text
    // Берем случайный символ
    .find("span:nth-child(" + (Math.floor(Math.random()*numLetters)+1) + ")")
    .animate({
      'textShadowBlur': Math.floor(Math.random()*25)+4,
      'textShadowColor': 'rgba(0,100,0,' + (Math.floor(Math.random()*200)+55) + ')'
    });

// Рекурсивный вызов по таймеру
setTimeout(randomBlurize, 100);

} 
// Вызываем только один раз
randomBlurize();

 

Демонстрационную страницу лучше всего смотреть в браузерах Webkit.

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

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

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



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

Забавы с размытием текста | | 2012-06-19 12:09:07 | | Статьи Web-мастеру | | Сделать текст размытым очень просто. Используем прозрачный цвет и установки тени: .blurry-text { color: transparent; text-shadow: 0 0 5px rgba(0,0,0,0.5); } Однако такой ход мысли очень опасен, | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: