Сегодня попробуем провести небольшой эксперимент с анимацией на CSS&jQuery.
Сам пример работает только в браузерах Firefox и Chrome. В Safari эксперимент не проверялся. Также есть возможность добавить поддержку для Оперы. Напишите в комментариях, если такая реализация вам будет нужна. Сделаем.
Для начала создадим стек изображений. По умолчанию, положение каждого из изображений будет отличаться друг от друга поворотом на несколько градусов. Далее инициируем вращение изображений вокруг своей оси. При этом положение между соседями также не будет превышать определенный градус.
Наверное, вы спросите, зачем нужен jQuery? Все анимацию можно реализовать и на CSS. Но jQuery нужен для автоматизации генерации CSS кода, вот и все.
Смотрим код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
<!DOCTYPE html> <html> <head> <title>CSS Rotate And Animation</title> <script src="jquery-1.6.4.min.js"></script> <script> $(function() { var tot = $(".img_c").length; var stat = deg = 10; var rotate = ""; var frame, mozframe, webkitframe; $("img").each(function(index) { $(this).css({ "transform": "rotate("+deg+"deg)", "-moz-transform": "rotate("+deg+"deg)", "-webkit-transform": "rotate("+deg+"deg)", "-o-transform": "rotate("+deg+"deg)" }); rotate = "100% {" + "transform: rotate(360deg);" + "-moz-transform: rotate(360deg);" + "-webkit-transform: rotate(360deg);" + "-o-transform: rotate(360deg);" + "} "; var imgclass = parseInt(index+1); frame = " @keyframe anim" + imgclass + " { " + rotate + "}"; mozframe = " @-moz-keyframes anim" + imgclass + " { " + rotate + "}"; webkitframe = " @-webkit-keyframes anim" + imgclass + " { " + rotate + "}"; $('<style> '+ frame + mozframe + webkitframe + ' .img'+imgclass+' { animation: anim'+imgclass+' 3s ease 0s infinite alternate;' + '-moz-animation: anim'+imgclass+' 3s ease 0s infinite alternate;' + '-webkit-animation: anim'+imgclass+' 3s ease 0s infinite alternate; }' +'</style>').appendTo('head'); deg = deg + stat; }); }); </script> <style> body { background: #fff url('wood_pattern.png') repeat top right; } .content { margin: 0 auto; padding: 100px; } img { margin: 10px; padding: 20px; background: #fff; -moz-box-shadow: 0px 0px 3px #d3d3d3; -webkit-box-shadow: 0px 0px 3px #d3d3d3; box-shadow: 0px 0px 3px #d3d3d3; position: absolute; } </style> </head> <body> <div class="content"> <div class="img_c"><img class="img1" src="img/01.jpg"/></div> <div class="img_c"><img class="img2" src="img/02.jpg"/></div> <div class="img_c"><img class="img3" src="img/03.jpg"/></div> <div class="img_c"><img class="img4" src="img/04.jpg"/></div> <div class="img_c"><img class="img5" src="img/05.jpg"/></div> <div class="img_c"><img class="img6" src="img/06.jpg"/></div> <div class="img_c"><img class="img7" src="img/07.jpg"/></div> <div class="img_c"><img class="img8" src="img/07.jpg"/></div> <div class="img_c"><img class="img9" src="img/09.jpg"/></div> <div class="img_c"><img class="img10" src="img/09.jpg"/></div> </div> </body> </html> |
Вы, наверное, уже поняли на сколько прост jQuery код. В результате на выходе мы получаем веерную анимацию вращающихся изображений на 360 градусов за 3 секунды в одну сторону, потом в другую.
Смотрим пример.