Анимированная открытка с использованием CSS3

Представим один из примеров практического использования анимаций CSS3 - создание анимированных открыток. В качестве примера приводится открытка из Парижа.

Анимации CSS3 поддерживаются в Chrome 2+, Safari 4+, Firefox 5+, iOS Safari 3.2+ и Android 2.1+. В нашей открытке будут оживляться облака (используем три слоя), свет прожектора (вращение вокруг определенной точки) и вспышки на Эйфелевой башне.

Структура разметки для открытки очень простая:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Привет из Парижа</title>
</head>
<body>
   <div id="wrap">
      <h1>Bonne Nuit <em>PARIS !</em></h1>
      <div id="phare"></div>        
      <div id="eiffel"></div>
      <div id="eiffel_wrap">
         <div id="sparkling1"></div>
         <div id="sparkling2"></div>
      </div>  
      <div id="roofs"></div>
   </div>
</body>
</html>

Для формирования внешнего вида будут использоваться следующие изображения:

Основа кода CSS для нашей открытки будет иметь следующий вид:

Для независимой анимации трех слоев с облаками будут использоваться следующие кадры.

/* используется для #wrap, который имеет 3 слоя фона */
 
    @-webkit-keyframes wind  {
             0% {background-position: 0px 200px,0px 350px, left top;}
            50% {background-position:  500px 40px,600px 450px, left top;}
            100% {background-position: 1000px 200px,1200px 350px, left top}
    }
     
    @-moz-keyframes wind  {
             0% {background-position: 0px 200px,0px 350px, left top;}
            50% {background-position:  500px 40px,600px 450px, left top;}
            100% {background-position: 1000px 200px,1200px 350px, left top}
    }
 
/* используется для #roofs, который имеет 2 слоя фона */
     
    @-webkit-keyframes wind1 {
             0% {background-position: 100px 250px, left bottom;}
            50% {background-position:  650px 150px, left bottom;}
            100% {background-position: 1300px 250px, left bottom}
    }
     
    @-moz-keyframes wind1 {
             0% {background-position: 100px 250px, left bottom;}
            50% {background-position:  650px 150px, left bottom;}
            100% {background-position: 1300px 250px, left bottom}
    }


Так мы определяем значение свойства background-position в начале, середине и конце анимации. Затем добавляем:

#wrap {-webkit-animation: wind 80s linear infinite; 
       -moz-animation: wind 80s linear infinite;}
#roofs {-webkit-animation: wind 80s linear infinite;
       -moz-animation: wind 80s linear infinite; }

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

Для анимации света прожектора будем одновременно изменять прозрачность с помощью свойства opacity и вращать изображение вокруг определенной точки (на изображении выше она отмечена красной окружностью).

@-webkit-keyframes phare {
         0% { -webkit-transform:rotate(0deg); opacity:0} 
    50% { -webkit-transform:rotate(180deg); opacity:1} 
        100% { -webkit-transform:rotate(360deg); opacity:0;}
}
    #phare {-webkit-transform-origin: center top; 
        -webkit-animation: phare 15s linear infinite;}

Для формирования вспышек на Эйфелевой башне будем использовать два изображения:

И устанавливаем стили:

#eiffel_wrap { position:absolute; width:240px; 
              height:462px; right:10px; top: 180px; opacity:0;}
#sparkling1 { position:absolute; background: url('images/sparkling1.png') no-repeat; 
              width:240px; height:462px; opacity:0;}
#sparkling2 { position:absolute; background: url('images/sparkling2.png') no-repeat; 
              width:240px; height:462px;  opacity:0;}

И анимируем элементы #eiffel_wrap, #sparkling1 и #sparkling2 (в примере приведен вариант только с префиксом -moz):

@-webkit-keyframes sparkling {
        0% {opacity:0;}
        50%{opacity:1;}
        100% {opacity:0;}
    }

Идея заключается в переменном включении элементов #sparkling1 и #sparkling2 с длительность цикла 0.4с. Для достижения нужного эффекта установим задержку  0.2s для #sparkling1.

#sparkling1 {-webkit-animation: sparkling .4s .2s  infinite;}
#sparkling2 {-webkit-animation: sparkling .4s  infinite;}

В Париже впечатляющий вечерний световой спектакль включается на несколько минут каждый полный час. Для имитации такого цикла используем элемент #eiffel_wrap и анимацию eiffel_wrap (на открытке воспроизводится просто длительная пауза).

#eiffel_wrap { -webkit-animation: eiffel_wrap 30s 1s  infinite;} 
@-webkit-keyframes eiffel_wrap {
            0% {opacity:1;-webkit-animation-timing-function: steps(1);}
            40%{opacity:0;}
            100% {opacity:0;}
            }

С помощью директивы -webkit-animation-timing-function: steps(1); переход осуществляется сразу без эффекта затухания.

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/Uk9wjz_HZ14/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Анимированная открытка с использованием CSS3 | | 2012-09-25 21:37:55 | | Статьи Web-мастеру | | Представим один из примеров практического использования анимаций CSS3 - создание анимированных открыток. В качестве примера приводится открытка из Парижа.Анимации CSS3 поддерживаются в Chrome 2+, | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: