SlideShare a Scribd company logo
CSS Анимация


               Сергей Чикуёнок
                  «Аймобилко»
Основные
     компоненты

CSS Transforms
CSS Transitions
CSS Animations
Основные
     компоненты

CSS Transforms    4   10.5   3.6




CSS Transitions   4   10.5




CSS Animations    4
CSS Transforms
CSS Transforms
 translate

 rotate

 scale

 skew
CSS Transforms


-webkit-   transform
  -moz-
    -o-    transform-origin
CSS Transforms
Пример

  -webkit-transform: scale(0.7) rotate(30deg);
  -webkit-transform-origin: 10% 100%;
CSS Transitions
CSS Transitions
• Плавный переход от одного значения
  к другому
• Простое решение простых задач
CSS Transitions

           transition-property
-webkit-   transition-duration
    -o-
           transition-timing-function
           transition-delay
События
  CSS Transitions

webkitTransitionEnd
oTransitionEnd
CSS Transitions
Пример

  a {
        color: #f00;
        -webkit-transition: color 0.5s ease-out 0s;
  }
  a:hover {
      color: #0f0;
  }
CSS Animations
CSS Animations
• Более сложные движения
• Зацикливание анимации
CSS Animations
           animation-name
           animation-duration
-webkit-   animation-delay
           animation-iteration-count
           animation-direction
События
CSS Animations

webkitAnimationStart
webkitAnimationIteration
webkitAnimationEnd
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; }
  }
Особенности
использования
CSS-анимаций
Определяем
             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>
Safari/WebKit
     на OS X 10.6 / iPhone
• поддержка 3D transforms
CSS Transforms + CSS Transitions/Animations =
• Аппаратное ускорение
• Субпиксельное сглаживание
• Не относится к Google Chrome
  и Safari на Mac OS X 10.5
-webkit-transform: rotateY(40deg);




3D Transform                         2D Transform
Определяем наличие
  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>
Меняем начальное значение
     свойства с CSS Transition
         A



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



             C
Меняем начальное значение
     свойства с CSS Transition
         A
                 // точка B
                 block.style.left = ‘20px’;
                 block.style.top = ‘40px’;

B
                 // точка C
                 block.style.left = ‘100px’;
             C   block.style.top = ‘80px’;
Меняем начальное значение
     свойства с CSS Transition
                 // точка B

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

B
                 setTimeout(function(){
                 // точка C
                 block.style.left = ‘100px’;
             C
                 block.style.top = ‘80px’;
                 block.style.webkitTransitionDuration = ‘2s’;
                 }, 1);
Останавливаем
           С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>
Останавливаем
                 С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);
Останавливаем
        CSS Animation


-webkit-animation-play-state: running | paused;
Проблемы,
  возникающие
при использовании
  CSS-анимаций
Проблемы


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


Сильная дискретность движения
в Opera 10.5
(видео)
Проблемы


      Размер блока:
      2000×1000
Проблемы


      Размер блока:
      2001×1000
Проблемы
Совет



  Избегайте анимации блоков, ширина или высота
  которых больше 2000 пикселей
  (для iPhone – 1024 пикселя)
Проблемы
Проблемы
Проблемы
Совет для iPhone



   Старайтесь одновременно анимировать как
   можно меньше объектов, по возможности
   переносите анимацию на контейнер.
Проблема


Шифты в Opera 10.5 отрисовываются иначе
на блоках с CSS Transforms
(пример)
Вопросы?
serge.che@gmail.com
http://chikuyonok.ru

More Related Content

PDF
Я ♥ Svg — Владимир Кузнецов, Engine6
PDF
ДАМП 2015 Екатеринбург
PDF
Ember.js ответ на почти все вопросы - java script frameworks day 2014
PPT
Профилирование и оптимизация jQuery–кода
PDF
Обзор ES2015(ES6)
PPT
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
PDF
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
PDF
Randomising css animations
Я ♥ Svg — Владимир Кузнецов, Engine6
ДАМП 2015 Екатеринбург
Ember.js ответ на почти все вопросы - java script frameworks day 2014
Профилирование и оптимизация jQuery–кода
Обзор ES2015(ES6)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Randomising css animations

Similar to Sergey Chikuyonok Css Animation (20)

PDF
CSS. Практика
PDF
Артем Маркушев - HTML & CSS
PPT
Web осень 2012 лекция 10
PPT
Web весна 2013 лекция 10
PDF
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
PPTX
Davit mkrtchyan rich wicket presentation
PDF
Олег Мохов "Драматическая история одной маленькой промостранички"
PDF
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
PDF
Unit-тестирование скриншотами: преодолеваем звуковой барьер
PPTX
XSS. Обходы фильтров и защит.
PDF
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
PPTX
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
PDF
06 HappyDev-lite-2015 autumn. Андрей Юдин. JavaScript. Аспекты применения в с...
PPTX
Сетки для всего или как использовать чужие недостатки
PPTX
Сетки для всего или как использовать чужие недостатки
PDF
React со скоростью света: не совсем обычный серверный рендеринг
ZIP
HTML5. Будем знакомы! Павел Ловцевич
PDF
Андрей Тюпа Оптимизация верстки Sass + Compass framework
PPTX
Сетки для всего или как использовать чужие недостатки (Василий Аксенов)
CSS. Практика
Артем Маркушев - HTML & CSS
Web осень 2012 лекция 10
Web весна 2013 лекция 10
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Davit mkrtchyan rich wicket presentation
Олег Мохов "Драматическая история одной маленькой промостранички"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Unit-тестирование скриншотами: преодолеваем звуковой барьер
XSS. Обходы фильтров и защит.
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
06 HappyDev-lite-2015 autumn. Андрей Юдин. JavaScript. Аспекты применения в с...
Сетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостатки
React со скоростью света: не совсем обычный серверный рендеринг
HTML5. Будем знакомы! Павел Ловцевич
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Сетки для всего или как использовать чужие недостатки (Василий Аксенов)
Ad

More from rit2010 (20)

PDF
Sphinx new
PPTX
Microsoft cluster systems ritconf
PPT
анатомия интернет банка Publish
PPT
анатомия интернет банка Publish
PPT
Anatol filin pragmatic documentation 1_r
PPTX
Ilia kantor паттерны серверных comet решений
PDF
Alexei shilov 2010 rit-rakudo
ODP
Alexandre.iline rit 2010 java_fxui_extra
PDF
Konstantin kolomeetz послание внутреннему заказчику
PDF
Bykov monitoring mailru
PDF
Alexander shigin slides
PPTX
иван василевич Eye tracking и нейрокомпьютерный интерфейс
PPT
Andrey Petrov P D P
PPT
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
PDF
Dmitry lohansky rit2010
PDF
Dmitry Lohansky Rit2010
PPTX
Related Queries Braslavski Yandex
PPTX
молчанов сергей датацентры 10 04 2010 Light
PPTX
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
PPT
Serge P Nekoval Grails
Sphinx new
Microsoft cluster systems ritconf
анатомия интернет банка Publish
анатомия интернет банка Publish
Anatol filin pragmatic documentation 1_r
Ilia kantor паттерны серверных comet решений
Alexei shilov 2010 rit-rakudo
Alexandre.iline rit 2010 java_fxui_extra
Konstantin kolomeetz послание внутреннему заказчику
Bykov monitoring mailru
Alexander shigin slides
иван василевич Eye tracking и нейрокомпьютерный интерфейс
Andrey Petrov P D P
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Dmitry lohansky rit2010
Dmitry Lohansky Rit2010
Related Queries Braslavski Yandex
молчанов сергей датацентры 10 04 2010 Light
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Serge P Nekoval Grails
Ad

Sergey Chikuyonok Css Animation