В этой статье мы будем создавать анимированную картинку исключительно средствами CSS3 и разберёмся как создать простую, но яркую и разнообразную картину.
И как с анимацией облаков , всё будет показано пошагово, визуально и с краткими примерами. В этом примере будет использована картинка Южного Тироля. Картина показывает Santnerspitze.
Во-первых, начнём с неподвижной части изображения. Изображение Santnerspitze, использованное в этой анимации в качестве фона, разделено на несколько уровней. Первый уровень используется в качестве фона для анимации и состоит только из неба. Перед ним, с домами и деревьями, расположен следующий слой, так что облако может двигаться позади. Лужайка на переднем плане, в свою очередь, состоит из трех дополнительных уровней каждый из которых представляет только часть луга, и они также сохранены в PNG формате.
Анимация облаков
В статье облако анимация уже в подробностях описывалось функционирование ключевых кадров, так что здесь показана только интеграция HTML5 и CSS3 . Единственная разница в анимации от предыдущей статьи, в том, что изображения включены не в HTML5, а непосредственно в CSS3.
В этой анимации два облака позиционируются с помощью “z-index” за горой. Во-вторых, меньшее облако немного смещено вверх и движется быстрее чем первое. И так как второе облако должно появиться в кадре только через 10 секунд, оно было с помощью “left: -135px” помещенно за кадром.
Анимация цветов
Цветы немного отличаются от анимированных облаков.
В отличие от облаков они не имеют команды бесконечного цикла “infinite”, они управляются командой “forwards”. Таким образом, объект по истечении времени анимации сохраняет стиль предыдущего “@ KeyFrames”. Другими словами, цветы остаются на лужайке и не растут снова.
Анимация летающих птиц
Особенностью птиц является движение крыльев, поэтому файл создан с использованием GIF-анимации. Для того, чтобы реально изобразить движение птичьего полета, анимацию необходимо совместить со взмахом крыльев. Непрозрачность уменьшена до 90%.
Структура HTML выглядит следующим образом.
<div id="hg"> <div id="santner"> </div> <div id="wiese1"> </div> <div id="wiese2"> </div> <div id="wiese3"> </div> <div id="wolke1"> </div> <div id="wolke2"> </div> <div id="adler"> </div> <div id="vogel"> </div> </div>
CSS3.
#hg { position: relative; overflow: hidden; background: url(http://www.webdesign-klamonfra.de/bilder/Seis.JPG) no-repeat; height: 35.2em; width: 46.9em; font-family: Comic Sans MS; text-align: center; color: #fff; text-transform: uppercase; border-radius: 20px; border: 5px solid #eee; box-shadow: 1px 1px 5px 2px #777; margin: 2em; z-index: 1; } #santner, #wiese1, #wiese2, #wiese3 { position: absolute; height: 35.2em; width: 46.9em; } #santner { background: url(http://www.webdesign-klamonfra.de/bilder/santnerspitze.png) no-repeat; z-index: 10; } #wiese1 { background: url(http://www.webdesign-klamonfra.de/bilder/wiese1.png) no-repeat; z-index: 20; } #wiese2 { background: url(http://www.webdesign-klamonfra.de/bilder/wiese2.png) no-repeat; z-index: 30; } #wiese3 { background: url(http://www.webdesign-klamonfra.de/bilder/wiese3.png) no-repeat; z-index: 40; } #wolke1, #wolke2 { position: absolute; height: 5em; width: 5em; background: url(http://www.webdesign-klamonfra.de/bilder/wolke_klein.png) no-repeat; } #wolke1 { z-index: 2; animation: wolke1 300s infinite linear; } @keyframes wolke1 { from{transform: scaleX(6) translate3d(-45px,40px,0)} to{transform: scaleX(5.7) translate3d(160px,40px,0)} } #wolke2 { z-index: 5; left: -135px; animation: wolke2 60s infinite linear 10s; } @keyframes wolke2 { from{transform: scaleX(2.3) translate3d(-60px,10px,0)} to{transform: scaleX(1.5) translate3d(600px,10px,0)} } #adler { position: absolute; left: -125px; height: 13.9em; width: 15.6em; background: url(http://www.webdesign-klamonfra.de/bilder/adler.gif) no-repeat; opacity: .9; z-index: 12; animation: adler 30s infinite linear; } @keyframes adler { from{transform: scale(.15) translate3d(-125px,40px,0)} to{transform: scale(.3) translate3d(2700px,450px,0)} } #vogel { position: absolute; left: 585px; height: 1.7em; width: 1.9em; background: url(http://www.webdesign-klamonfra.de/bilder/vogel.gif) no-repeat; opacity: .9; z-index: 12; animation: vogel 40s infinite linear; } @keyframes vogel { from{transform: scale(.5) translate3d(380px,150px,0)} to{transform: scale(.5) translate3d(-1300px,80px,0)} }
Пример: