|
|
|||||||||||||||||||||||||||||
|
Трюки с CSS-анимациями: мгновенные изменения, отрицательные задержки, анимация transform-origin и другоеИсточник: habrahabr ilya42
Применяя CSS-анимации в повседневной работе, я постепенно выработал привычку экспериментировать с ними в свободное время. Постоянно пытаясь реализовать очередную интересную задумку с использованием как можно меньшего числа элементов HTML, я обнаружил немало способов сделать с помощью CSS довольно неочевидные вещи. В этой статье я хочу поделиться некоторыми из них.
Быстрое изменение состояния посреди анимацииОбычно анимации используются для того, чтобы плавно менять свойства элементов со временем. Однако изменения могут также быть практически мгновенными. Для этого надо задать два ключевых кадра с очень маленьким интервалом, например в 0.001%:
Код примера:
Отрицательные задержки анимацииПоложительная задержка откладывает начало анимации на некоторое время. А отрицательная - начинает анимацию немедленно, но не с самого сначала, а со времени, указанного в задержке. Другими словами, начинает анимацию с какого-то момента внутри её цикла. Это позволяет применять анимацию к нескольким элементам со сдвигом фазы, изменяя лишь время задержки. Вот пример использования такой анимации:
Код примера:
Пропорциональные анимацииЯ стараюсь делать веб-приложения настолько адаптивными, насколько возможно. Это касается и CSS-анимаций. Хотя сделать абсолютно все анимации адаптивными невозможно, иногда всё же удаётся использовать вместо абсолютных единиц измерения проценты и другие относительные единицы. Во многих своих анимациях я использую элементы, размеры которых должны быть пропорциональны размерам страницы. Возможно вы думаете, что для этого я использую фиксированную ширину и высоту, но это не так. Можно указать ширину в процентах, нулевую высоту и процентное значение для
Код примера:
Изменение transform-origin посреди анимацииРаботая над одной из анимаций, я с удивлением обнаружил, что свойство
Код примера:
У этого трюка есть недостаток: вы не можете использовать
Отрицательный transform-originМожно задать отрицательное значение transform-origin, что может быть полезно для создания вращающихся элементов. Вместо того, чтобы отдельно задавать смещение и угол поворота для элемента, как описывает Ли Веру, этого можно добиться проще, используя отрицательные значения
Код примера:
Магия box-shadowДля анимации простых форм без контента внутри может пригодиться свойство
Код примера:
К сожалению,
Использование псевдоэлементовТак же как и
Код примера:
В этом примере все концентрические окружности вокруг центрального мигающего круга, так же как и два маленьких кружка на внешнем кольце сделаны с помощью
Несколько советов напоследок
Используйте трансформации везде, где только можноКак показал Пол Айриш и другие, трансформации работают быстрее, чем изменение размеров и положения элементов с помощью свойст С помощью трансформаций легче реализовать адаптивный дизайн, применяя относительные значения для Отказ от использования трансформаций приводит к появлению ошибок, которые трудно отловить. Например, вот эта анимация отображается в браузере Chrome с некорректными цветами, хотя значения в коде правильные. После перехода на CSS-трансформации проблема решилась сама собой.
z-index может вызывать проблемыПожалуй, на решение проблем с Также стоит отметить, что если вам нужно, чтобы псевдоэлементы оказались за родительским элементом, псевдоэлемент должен иметь отрицательный И последнее. Любой элемент, для которого задана прозрачность, отличная от "1", получает собственный контекст наложения. Подробнее об этом - в статье Филипа Уолтона.
Ищите источники вдохновенияЧто-то в реальном мире, интересная веб-страница, необычный видеоэффект, анимированный gif или что угодно ещё - постоянно ищите вещи, которые стоит попробовать реализовать. Я обнаружил, что если не подглядывать сразу, как именно сделан тот или иной эффект, можно найти уникальный способ и даже превзойти оригинал. Даже если я терплю неудачу, я всегда по крайней мере узнаю что-то новое о языке программирования, который я использую. Часто получается так, что даже не реализованная полностью задумка оказывается довольно эффектной. Иногда наоборот - результат оказывается намного лучше, чем я мог мечтать. Надеюсь, что эта статья поможет и вам создать что-то новое и прекрасное, даже многие конкретные техники, описанные в ней, вам уже знакомы. Ссылки по теме
|
|