Создание простых скользящих блоков на CSS
В данном уроке речь пойдет о создании замечательного ротатора блоков для сайта с использованием стилей CSS. Данное решение поддерживается всеми браузерами, различия могут состоять только в эффектах анимации. Идея состоит в том, что при нажатии на блок, он начинает скользить со стороны в сторону сменив при этом размеры и информацию в поле блока. Данный ротатор является многофункциональным, это значит, что информацию в блоке вы можете легко изменить, например на медиафайл.
Замысел работы наших блоков состоит вот в чем, что вся анимация в данном эффекте является трансформацией CSS3. JavaScript используется только для обработки события click и устанавливает/удаляет соответствующие классы. Почему не использовался JavaScript для анимаций, чтобы получить поддержку в более широком списке браузеров? CSS3 лучше подходит для решения таких задач.

Для начала нам необходимо создать HTML-разметку. Каждый блок имеет подзаголовок, который виден только в неактивном состоянии блока, и еще один элемент div, который содержит все, что выводится в активном состоянии.
</pre> <div id="page-wrap"> <div id="rotator"> <div id="block-1" class="active"> <h2>ГЛАВНАЯ СТРАНИЦА</h2> <div><img src="spacefrog.jpg" alt="space frog" /></div> </div> <div id="block-2" class="non-active-top"> <h2>ОПИСАНИЕ САЙТА</h2> <div><img src="goblins.jpg" alt="goblins" /></div> </div> <div id="block-3" class="non-active-bottom"> <h2>СОГЛАШЕНИЕ САЙТА</h2> <div> <h1>СОГЛАШЕНИЕ САЙТА RUDEBOX!</h1> описание</div> </div> </div> </div> <pre>
Затем стилизуем контейнер и текст который будет находится в данных блоках с помощью CSS:
#rotator { width: 920px; height: 280px; position: relative; background: url(1.jpg); padding: 20px; }
Затем определяем для плавающих блоков позиционирование и размер:
#rotator .active { top: 20px; left: 20px; width: 580px; height: 280px; }
#rotator .non-active-top { top: 20px; left: 620px; height: 130px; width: 320px; }
#rotator .non-active-bottom { top: 170px; left: 620px; height: 130px; width: 320px; }
#rotator .non-active-top:hover, #rotator .non-active-bottom:hover {
cursor: pointer;
-webkit-box-shadow: 0 0 10px rgba(0,0,0,0.4);
-moz-box-shadow: 0 0 10px rgba(0,0,0,0.4);
box-shadow: 0 0 10px rgba(0,0,0,0.4);

Каждый блок имеет общие свойства, обрезку выступающего контента, абсолютное позиционирование, и одинаковую скорость анимации:
#rotator > div {
position: absolute;
overflow: hidden;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
}
#rotator > div > div {
padding: 0px;
}
#rotator > div > div img {
float: right;
}
В демо представлены блоки с различными градиентными заливками, делаем это следующим образом:
#block-1 { background: url(3.jpg); }
#block-2 { background: url(4.jpg); }
#block-3 { background: url(5.jpg); }
Теперь заставляем наши блоки скользить с помощью jQuery, мы сделали функцию rotate, которая устанавливает соответствующие классы блокам в зависимости от текущего значения current.
var current;
function rotate() {
if (current == 1) {
$("#block-1").removeClass().addClass("active");
$("#block-2").removeClass().addClass("non-active-top");
$("#block-3").removeClass().addClass("non-active-bottom");
} else if (current == 2) {
$("#block-1").removeClass().addClass("non-active-bottom");
$("#block-2").removeClass().addClass("active");
$("#block-3").removeClass().addClass("non-active-top");
} else {
$("#block-1").removeClass().addClass("non-active-top");
$("#block-2").removeClass().addClass("non-active-bottom");
$("#block-3").removeClass().addClass("active");
}
}
Затем нам необходимо чтобы блоки возвращались на обратную позицию, для этого мы устанавливаем обработчик события click для каждого блока. Когда происходит нажатие, мы определяем с помощью ID номер блока и устанавливаем значение current, а затем вызываем функцию rotate.
$("#rotator div").click(function() {
current = this.id.substr(6);
rotate();
});
Обратите внимание, что наши блоки определенны классами, и при нажатии классы изменяются, они будут иметь другое позиционирование.





