Pull to refresh

Новое в CSS 3: анимация, трансформация, переменные.

Reading time 2 min
Views 6K
Что-то мне кажется, что в этот раз с идеями внедерения новых правил разработчики перестарались…
Dave Hyatt, Dean Jackson и Chris Marrin (все трое работают в Apple) предложили внедрить в CSS 3 поддержку создания анимации, трансформацию объектов, их изменение с  течением времени и ввести css-переменные.

О причине реализации возможности создания анимации они пишут:
На сегодняшний день создание анимации поддерживается лишь на языке SVG, но нет ни одной системы, котрая бы поддерживала создание анимации с помощью CSS. Поэтому наша цель — решить эту задачу внедрением особых CSS свойств, которые будут иметь значения, отвечающие за создание анимации и управление ею.

Эти значения будут описываться в селекторе keyframe:
 @keyframes 'wobble' {
0 {
left: 100px;
}

40% {
left: 150px;
}

60% {
left: 75px;
}

100% {
left: 100px;
}
}

где «wobble» — название анимации, а соответствующие значения 0, 40%, 60% и 100% — определяют момент времени от общего временного интервала.
Css3 анимация
На рисунке выше приведен пример анимации элемента за 10 секунд.
Еще один вариант реализации - задание для каждого фрагмента определенной функции, управляющей отрисовкой:
 @keyframes 'bounce' {
from {
top: 100px;
animation-timing-function: ease-out;
}

25% {
top: 50px;
animation-timing-function: ease-in;
}

50% {
top: 100px;
animation-timing-function: ease-out;
}

75% {
top: 75px;
animation-timing-function: ease-in;
}

to {
top: 100px;
}
}

В этом примере мы создаем анимацию с именем «bounce», имеющую 4 кадра, каждый из которых занимает 25% общего времени анимации. При этом, каждому фрагменту задана функция «ease-in» либо «easy-out». Первая отвечает за изменение отрисовки элемента внтури какой-либо области, а вторая за ее пределами. Все эти свойства управления созданием анимации исходят из идеи внедрения управления элементом во времени.
Подробней о новом свойстве создания анимации можно узнать здесь

Вторая идея, мне кажется, более обоснована — это управление положением элемента на плоскости. Вот пара примеров реализации:
div { transform: translate(100px, 100px); }

Такой код приведет к следующей трансформации элемента:

Или вот, более наглядное описание возможностей:
 div {
height: 100px; width: 100px;
transform: translate(80px, 80px) scale(1.5, 1.5) rotate(45deg);
}


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

И последняя фантазия разработчиков уж точно кажется немного безумной — введение css-переменных. Неужели CSS превратится в полноценный язык программирования и управления html элементами?

Примеры использования:
 @variables {
CorporateLogoBGColor: #fe8d12;
}

div.logoContainer {
background-color: var(CorporateLogoBGColor);
}

@variables {
myMargin1: 2em;
}

@variables print {
myMargin1: 2em;
}

.data, div.entry {
margin-left: 30px;
margin-left: var(myMargin1);
}

Смысл этого кода таков: селектор variables определяет имя и значение переменной, которое можно в дальнейшем приписать к любому элементу. Идея все же не проработана. Зачем определять для цвета переменную, если его можно просто указать?
Прочесть подробнее о css-переменных

От себя лишь хочу добавить, что, на мой взгляд, создание новых свойств CSS 3 должно быть основано, прежде всего, на запросах вебмастеров, а не только на идеях супер-специалистов из крупных компаний. Может создать кампанию: «Вебмастер, даешь идеи для СSS 3» ?

Кросс-пост: Блог для вебмастеров
Tags:
Hubs:
+34
Comments 92
Comments Comments 92

Articles