sergey chikuyonok css animation

39
CSS Анимация Сергей Чикуёнок «Аймобилко»

Upload: rit2010

Post on 24-Jan-2015

2.379 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Sergey Chikuyonok  Css Animation

CSS Анимация

Сергей Чикуёнок«Аймобилко»

Page 2: Sergey Chikuyonok  Css Animation

Основные компоненты

CSS Transforms

CSS Transitions

CSS Animations

Page 3: Sergey Chikuyonok  Css Animation

Основные компоненты

CSS Transforms

CSS Transitions

CSS Animations

10.5 3.64

10.54

4

Page 4: Sergey Chikuyonok  Css Animation

CSS Transforms

Page 5: Sergey Chikuyonok  Css Animation

CSS Transforms

translate

rotate

scale

skew

Page 6: Sergey Chikuyonok  Css Animation

CSS Transforms

transform

transform-origin

-webkit--moz-

-o-

Page 7: Sergey Chikuyonok  Css Animation

Пример

CSS Transforms

-webkit-transform: scale(0.7) rotate(30deg);

-webkit-transform-origin: 10% 100%;

Page 8: Sergey Chikuyonok  Css Animation

CSS Transitions

Page 9: Sergey Chikuyonok  Css Animation

CSS Transitions

• Плавный переход от одного значения к другому

• Простое решение простых задач

Page 10: Sergey Chikuyonok  Css Animation

CSS Transitions

transition-property

transition-duration

transition-timing-function

transition-delay

-webkit--o-

Page 11: Sergey Chikuyonok  Css Animation

СобытияCSS Transitions

webkitTransitionEnd

oTransitionEnd

Page 12: Sergey Chikuyonok  Css Animation

Пример

CSS Transitions

a { color: #f00; -webkit-transition: color 0.5s ease-out 0s;}a:hover { color: #0f0;}

Page 13: Sergey Chikuyonok  Css Animation

CSS Animations

Page 14: Sergey Chikuyonok  Css Animation

CSS Animations

• Более сложные движения• Зацикливание анимации

Page 15: Sergey Chikuyonok  Css Animation

CSS Animations

animation-name

animation-duration

animation-delay

animation-iteration-count

animation-direction

-webkit-

Page 16: Sergey Chikuyonok  Css Animation

СобытияCSS Animations

webkitAnimationStart

webkitAnimationIteration

webkitAnimationEnd

Page 17: Sergey Chikuyonok  Css Animation

Пример

CSS Animations

#flying-block { -webkit-animation-name: example-anim; -webkit-animation-duration: 2s;}@-webkit-keyframes example-anim { 0% { left: 0px; top: 0px; } 50% { left: 200px; top: 100px; } 100% { left: 100px; top: 200px; } }

Page 18: Sergey Chikuyonok  Css Animation

Особенности использования CSS-анимаций

Page 19: Sergey Chikuyonok  Css Animation

Определяемvendor prefix

<script type="text/javascript"> var vendor_prefix = null, div = document.createElement('div'); if (typeof(div.style.webkitTransform) != 'undefined') vendor_prefix = '-webkit-'; else if (typeof(div.style.MozTransform) != 'undefined') vendor_prefix = '-moz-'; else if (typeof(div.style.OTransform) != 'undefined') vendor_prefix = '-o-'; else if (typeof(div.style.transform) != 'undefined') vendor_prefix = ''; if (vendor_prefix !== null) { // есть поддержка CSS Transforms }</script>

Page 20: Sergey Chikuyonok  Css Animation

Safari/WebKit на OS X 10.6 / iPhone

• поддержка 3D transforms

CSS Transforms + CSS Transitions/Animations =

• Аппаратное ускорение• Субпиксельное сглаживание• Не относится к Google Chrome и Safari на Mac OS X 10.5

Page 21: Sergey Chikuyonok  Css Animation

-webkit-transform: rotateY(40deg);

3D Transform 2D Transform

Page 22: Sergey Chikuyonok  Css Animation

Определяем наличие 3D-трансформаций

<style type="text/css"> #transform3d-beacon { width: 0; } @media screen and (-webkit-transform-3d) { #transform3d-beacon { width: 100px; } }</style><script type="text/javascript"> var beacon = document.getElementById('transform3d-beacon'); var has_3d_support = beacon.offsetWidth > 0 && !window.opera;</script>

Page 23: Sergey Chikuyonok  Css Animation

Меняем начальное значение свойства с CSS Transition

A

B

C

-webkit-transition-property: top, left;-webkit-transition-duration: 2s;

Page 24: Sergey Chikuyonok  Css Animation

Меняем начальное значение свойства с CSS Transition

A

B

C

// точка Bblock.style.left = ‘20px’;

block.style.top = ‘40px’;

// точка C

block.style.left = ‘100px’;block.style.top = ‘80px’;

Page 25: Sergey Chikuyonok  Css Animation

Меняем начальное значение свойства с CSS Transition

A

B

C

// точка Bblock.style.left = ‘20px’;

block.style.top = ‘40px’;block.style.webkitTransitionDuration = ‘0s’;

setTimeout(function(){// точка C

block.style.left = ‘100px’;block.style.top = ‘80px’;

block.style.webkitTransitionDuration = ‘2s’;

}, 1);

Page 26: Sergey Chikuyonok  Css Animation

Останавливаем СSS Transition

<style type="text/css"> #block { -webkit-transition: left 5s linear 0s; }</style><script type="text/javascript">

function getCSS(elem, property) {var cs = window.getComputedStyle(elem, null);return cs.getPropertyValue(property);

}

var block = document.getElementById('block');

// запуск анимацииblock.style.left = ‘500px’;

// останавка анимацииblock.style.left = getCSS(block, ‘left’);

</script>

Page 27: Sergey Chikuyonok  Css Animation

...но технически анимация не остановится

Останавливаем СSS Transition

-webkit-transition: left 5s linear 0s;

block.style.left = ‘500px’;

setTimeout(function(){

block.style.left = getCSS(block, ‘left’);

}, 2000);

block.addEventListener(‘webkitTransitionEnd’, function(){

// покажет alert через 5 сек. после «остановки»

alert(‘stopped’);

}, false);

Page 28: Sergey Chikuyonok  Css Animation

Останавливаем CSS Animation

-webkit-animation-play-state: running | paused;

Page 29: Sergey Chikuyonok  Css Animation

Проблемы, возникающие

при использовании CSS-анимаций

Page 30: Sergey Chikuyonok  Css Animation

Проблемы

Наличие блока с -webkit-transform «ломает» position: fixed на странице в Safari

Page 31: Sergey Chikuyonok  Css Animation

Проблемы

Сильная дискретность движения в Opera 10.5

(видео)

Page 32: Sergey Chikuyonok  Css Animation

Проблемы

Размер блока:

2000×1000

Page 33: Sergey Chikuyonok  Css Animation

Проблемы

Размер блока:

2001×1000

Page 34: Sergey Chikuyonok  Css Animation

Совет

Проблемы

Избегайте анимации блоков, ширина или высота

которых больше 2000 пикселей

(для iPhone – 1024 пикселя)

Page 35: Sergey Chikuyonok  Css Animation

Проблемы

Page 36: Sergey Chikuyonok  Css Animation

Проблемы

Page 37: Sergey Chikuyonok  Css Animation

Совет для iPhone

Проблемы

Старайтесь одновременно анимировать как

можно меньше объектов, по возможности

переносите анимацию на контейнер.

Page 38: Sergey Chikuyonok  Css Animation

Проблема

Шифты в Opera 10.5 отрисовываются иначе на блоках с CSS Transforms

(пример)