CSS3 для веб-дизайнеров — страница 4 из 14

Как упоминалось ранее, переходы были изначально разработаны для движка WebKit и включены в Safari и Chrome начиная с версии 3.2, но Opera также поддерживает их начиная с 10.5 (http://bkaprt.com/css3/4/)[5]. Поддержка заявлена и в Firefox 4.0 (http://bkaprt.com/css3/5/)[6].

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

Полная запись перехода

Ниже приводится дополненное объявление перехода, в которое добавлены префиксы

-moz-
и 
-o-
, как и основное свойство
transition
. Как обычно, свойство без префикса ставится в самый конец, чтобы у него был наибольший вес, когда это свойство перейдет из состояния черновика в окончательную версию спецификации.


a.foo {

 padding: 5px 10px;

 background: #9c3;

 -webkit-transition: background 0.3s ease;

 -moz-transition: background 0.3s ease;

 -o-transition: background 0.3s ease;

 transition: background 0.3s ease;

 }


a.foo: hover {

 background: #690;

 }

Такая запись позволяет получить сглаживание цвета фона в последних версиях Safari, Chrome и Opera, равно как и в более свежих версиях всех остальных браузеров, которые решат поддерживать переходы.

Состояния перехода

Я помню, что слегка запутался, когда в первый раз начал экспериментировать с переходами на CSS. Казалось, что было бы логичнее расположить объявление перехода в тот фрагмент кода, где определяется состояние

:hover
. Оказывается, что элемент может находиться и в других состояниях – не только в 
:hover 
– и наверняка захочется, чтобы переход происходил в каждом состоянии без дублирования кода.

Например, можно наложить переход на состояния

:focus
и 
:active
. Нам не придется добавлять объявление перехода в описание каждого свойства, так как параметры перехода указываются лишь один раз – для основного состояния элемента.

Следующий пример добавляет точно такое же переключение фона для состояния

:focus
.

Таким образом, переход произойдет либо от того, что на ссылку наведут курсор, либо от того, что на нее будет наведен фокус (например, клавиатурой).


a.foo {

 padding: 5px 10px;

 background: #9c3;

 -webkit-transition: background 0.3s ease;

 -moz-transition: background 0.3s ease;

 -o-transition: background 0.3s ease;

 transition: background 0.3s ease;

 }


a.foo: hover,

a.foo: focus {

 background: #690;

 }

Переход нескольких свойств

Предположим, что кроме цвета фона хочется также менять цвет самой ссылки и накладывать переход на это изменение. Такого эффекта можно достичь, перечисляя одновременно несколько переходов и разделяя их запятой. На каждый переход можно навесить отдельную продолжительность и собственную временную функцию (рис. 2.03). (Продолжение строки отмечено символом»).


Рис. 2.03. Обычное состояние ссылки и состояние: hover


a.foo {

 padding: 5px 10px;

 background: #9c3;

 -webkit-transition: background.3s ease, 
color 0.2s linear;

 -moz-transition: background.3s ease, 
color 0.2s linear;

 -o-transition: background.3s ease, color 0.2s linear;

 transition: background.3s ease, color 0.2s linear;

 }


a.foo: hover,

a.foo: focus {

 color: #030;

 background: #690;

 }

Переход всех возможных состояний

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

all
. Тогда переход будет наложен на все возможные свойства.

Заменим перечисление

background
и 
color
на значение
all
. Теперь эти переходы получат одинаковую продолжительность и временную функцию.


a.foo {

 padding: 5px 10px;

 background: #9c3;

 -webkit-transition: all 0.3s ease;

 -moz-transition: all 0.3s ease;

 -o-transition: all 0.3s ease;

 transition: all 0.3s ease;

 }


a.foo: hover,

a.foo: focus {

 color: #030;

 background: #690;

 }


Использование

all
 – удобный способ отследить все изменения, происходящие в состояниях
:hover
,
:focus
,
:active
, который избавляет от необходимости перечислять каждое свойство, нуждающееся в обозначении перехода.

К каким свойствам применим переход

Мы применили переход к свойствам background и color. Но есть много других свойств, на которые можно наложить переход, включая

width
,
opacity
,
position
и 
font-size
. Таблица всех свойств (и их типов значений) опубликована на сайте W3C (http://bkaprt.com/css3/6/)[7].

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

Почему бы не воспользоваться JavaScript?

Читатель может подумать: раз не все браузеры поддерживают CSS-переходы, почему бы не использовать решение на JavaScript, чтобы показывать анимацию? Популярные фреймворки – jQuery, Prototype, script.aculo.us – уже давно предоставляют кросс-браузерные анимации.

Все зависит от того, насколько важны анимации. В книге я делаю акцент на том, что можно извлечь максимум из простоты и гибкости CSS3, выбирая подходящие части интерфейса, к которым можно применять новые свойства и улучшать взаимодействие пользователя с сайтом. Довольно часто анимации, сделанные средствами CSS-перехода, не относятся к ключевым составляющим сайта – таким как бренд, читаемость или расположение информационных блоков. Поэтому использовать несколько простых строчек на CSS, которые порождают простую анимацию естественными средствами браузера вместо того, чтобы привлекать JavaScript-фреймворк, кажется разумным. Очень хорошо, что он есть в нашем распоряжении.

Используйте с умом

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

Больше мыслей о подходящих скоростях переходов и анимаций можно узнать в публикации Трента Уолтона: http:// bkaprt.com/css3/7/[8].

Теперь, когда мы заручились прочными базовыми знаниями о работе CSS-переходов с технической точки зрения, мы можем применять их для сглаживания взаимодействия в следующих примерах начиная со следующей главы. Итак.

3. Hover по-новому

На протяжении последних двух глав мы разбирались в том, какие свойства CSS3 можно использовать сейчас. Мы также говорили о том, в каких частях интерфейса резонно применять эти свойства.

Повторим самое важное, что мы уже успели узнать.

1. Существуют основные свойства CSS3, которые применимы уже сегодня.