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

Similar to Sergey Chikuyonok Css Animation

CSS. Практика
CSS. ПрактикаCSS. Практика
CSS. Практика
Vitebsk Miniq
 
Артем Маркушев - HTML & CSS
Артем Маркушев - HTML & CSSАртем Маркушев - HTML & CSS
Артем Маркушев - HTML & CSSDataArt
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10Technopark
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10Technopark
 
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Ваш CSS нас не устраивает, мы придумаем свой / Роман Прудников (2ГИС)
Ontico
 
Davit mkrtchyan rich wicket presentation
Davit mkrtchyan rich wicket presentationDavit mkrtchyan rich wicket presentation
Davit mkrtchyan rich wicket presentation
Victoria Astapenko
 
Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"Олег Мохов "Драматическая история одной маленькой промостранички"
Олег Мохов "Драматическая история одной маленькой промостранички"
Yandex
 
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Yandex
 
Unit-тестирование скриншотами: преодолеваем звуковой барьер
Unit-тестирование скриншотами: преодолеваем звуковой барьерUnit-тестирование скриншотами: преодолеваем звуковой барьер
Unit-тестирование скриншотами: преодолеваем звуковой барьер
Roman Dvornov
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
Дмитрий Бумов
 
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтендаСтажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
7bits
 
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
KazHackStan
 
Svg
SvgSvg
06 HappyDev-lite-2015 autumn. Андрей Юдин. JavaScript. Аспекты применения в с...
06 HappyDev-lite-2015 autumn. Андрей Юдин. JavaScript. Аспекты применения в с...06 HappyDev-lite-2015 autumn. Андрей Юдин. JavaScript. Аспекты применения в с...
06 HappyDev-lite-2015 autumn. Андрей Юдин. JavaScript. Аспекты применения в с...
HappyDev-lite
 
Сетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиСетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостатки
UXkontur
 
Сетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостаткиСетки для всего или как использовать чужие недостатки
Сетки для всего или как использовать чужие недостатки
Vasiliy Aksyonov
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
Timophy Chaptykov
 
HTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел ЛовцевичHTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел Ловцевич
Транслируем.бел
 
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkАндрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkAlbina Tiupa
 
Сетки для всего или как использовать чужие недостатки (Василий Аксенов)
Сетки для всего или как использовать чужие недостатки (Василий Аксенов)Сетки для всего или как использовать чужие недостатки (Василий Аксенов)
Сетки для всего или как использовать чужие недостатки (Василий Аксенов)Ontico
 

Similar to Sergey Chikuyonok Css Animation (20)

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

More from rit2010

Sphinx new
Sphinx newSphinx new
Sphinx newrit2010
 
Microsoft cluster systems ritconf
Microsoft cluster systems ritconfMicrosoft cluster systems ritconf
Microsoft cluster systems ritconfrit2010
 
анатомия интернет банка Publish
анатомия интернет банка Publishанатомия интернет банка Publish
анатомия интернет банка Publishrit2010
 
анатомия интернет банка Publish
анатомия интернет банка Publishанатомия интернет банка Publish
анатомия интернет банка Publishrit2010
 
Anatol filin pragmatic documentation 1_r
Anatol filin  pragmatic documentation 1_rAnatol filin  pragmatic documentation 1_r
Anatol filin pragmatic documentation 1_rrit2010
 
Ilia kantor паттерны серверных comet решений
Ilia kantor паттерны серверных comet решенийIlia kantor паттерны серверных comet решений
Ilia kantor паттерны серверных comet решенийrit2010
 
Alexei shilov 2010 rit-rakudo
Alexei shilov 2010 rit-rakudoAlexei shilov 2010 rit-rakudo
Alexei shilov 2010 rit-rakudorit2010
 
Alexandre.iline rit 2010 java_fxui_extra
Alexandre.iline rit 2010 java_fxui_extraAlexandre.iline rit 2010 java_fxui_extra
Alexandre.iline rit 2010 java_fxui_extrarit2010
 
Konstantin kolomeetz послание внутреннему заказчику
Konstantin kolomeetz послание внутреннему заказчикуKonstantin kolomeetz послание внутреннему заказчику
Konstantin kolomeetz послание внутреннему заказчикуrit2010
 
Bykov monitoring mailru
Bykov monitoring mailruBykov monitoring mailru
Bykov monitoring mailrurit2010
 
Alexander shigin slides
Alexander shigin slidesAlexander shigin slides
Alexander shigin slidesrit2010
 
иван василевич Eye tracking и нейрокомпьютерный интерфейс
иван василевич Eye tracking и нейрокомпьютерный интерфейсиван василевич Eye tracking и нейрокомпьютерный интерфейс
иван василевич Eye tracking и нейрокомпьютерный интерфейсrit2010
 
Andrey Petrov P D P
Andrey Petrov P D PAndrey Petrov P D P
Andrey Petrov P D Prit2010
 
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовAndrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовrit2010
 
Dmitry lohansky rit2010
Dmitry lohansky rit2010Dmitry lohansky rit2010
Dmitry lohansky rit2010rit2010
 
Dmitry Lohansky Rit2010
Dmitry Lohansky Rit2010Dmitry Lohansky Rit2010
Dmitry Lohansky Rit2010rit2010
 
Related Queries Braslavski Yandex
Related Queries Braslavski YandexRelated Queries Braslavski Yandex
Related Queries Braslavski Yandexrit2010
 
молчанов сергей датацентры 10 04 2010 Light
молчанов сергей датацентры 10 04 2010  Lightмолчанов сергей датацентры 10 04 2010  Light
молчанов сергей датацентры 10 04 2010 Lightrit2010
 
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample SdkSergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdkrit2010
 
Serge P Nekoval Grails
Serge P  Nekoval GrailsSerge P  Nekoval Grails
Serge P Nekoval Grailsrit2010
 

More from rit2010 (20)

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

Sergey Chikuyonok Css Animation