Переход нескольких свойств
Состояния перехода
Я помню, что слегка запутался, когда в первый раз начал экспериментировать с переходами на 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;
}