Иногда в текст текст html-страницы сайта требуется внедрить меняющиеся изображения. Реализовывать такую ротацию картинок с помощью GIF или Flash-анимации неудобно и не универсально (т.к. в случае необходимости замены одной из картинок придется «перерисовывать» весь файл микро-галереи), поэтому кажется очевидным необходимость применения JavaScript и одного из его фреймворков – JQuery.
Рассмотрим простейший вариант реализации смены изображений с использованием JQuery без использования его дополнительных плагинов.
Необходимые характеристики скрипта:
- Последовательная смена изображений с ссылками на них.
- Правильный код XHTML.
- Минимальный размер кода.
В итоге мы получим плавную смену заранее заданного списка изображений с эффектом растворения.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Простая замена картинок с помощью JQuery</title> <style type="text/css"> div#rotator {position:relative; height:150px; margin-left: 15px;} div#rotator ul li {float:left; position:absolute; list-style: none;} div#rotator ul li.show {z-index:500;} </style> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> <!-- Автор Dylan Wagstaff, http://www.alohatechsupport.net --> <script type="text/javascript"> function theRotator() { // Устанавливаем прозрачность всех картинок в 0 $('div#rotator ul li').css({opacity: 0.0}); // Берем первую картинку и показываем ее (по пути включаем полную видимость) $('div#rotator ul li:first').css({opacity: 1.0}); // Вызываем функцию rotate для запуска слайдшоу, 5000 = смена картинок происходит раз в 5 секунд setInterval('rotate()',5000); } function rotate() { // Берем первую картинку var current = ($('div#rotator ul li.show')? $('div#rotator ul li.show') : $('div#rotator ul li:first')); // Берем следующую картинку, когда дойдем до последней начинаем с начала var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div#rotator ul li:first') :current.next()) : $('div#rotator ul li:first')); // Расскомментируйте, чтобы показвать картинки в случайном порядке // var sibs = current.siblings(); // var rndNum = Math.floor(Math.random() * sibs.length ); // var next = $( sibs[ rndNum ] ); // Подключаем эффект растворения/затухания для показа картинок, css-класс show имеет больший z-index next.css({opacity: 0.0}) .addClass('show') .animate({opacity: 1.0}, 1000); // Прячем текущую картинку current.animate({opacity: 0.0}, 1000) .removeClass('show'); }; $(document).ready(function() { // Запускаем слайдшоу theRotator(); }); </script> </head> <body> <div id="rotator"> <ul> <li class="show"><a href="http://google.ru/"><img src="images/image-1.jpg" width="500" height="313" alt="pic1" /></a></li> <li><a href="http://yandex.ru/"><img src="images/image-2.jpg" width="500" height="313" alt="pic2" /></a></li> <li><a href="http://nigma.ru/"><img src="images/image-3.jpg" width="500" height="313" alt="pic3" /></a></li> </ul> </div> </body> </html> |
Использован метод: http://www.alohatechsupport.net/webdesignmaui/maui-web-site-design/easy_jquery_auto_image_rotator.html с небольшими уточнениями.
Да я просто копирнула,, подставила свои рисунки, убрала лефт-маргин и всё собстна... ((
Здравствуйте! Спасибо за информацию. Подскажите где над кодом нужно работать чтобы не один блок менял картинки, а на пример, был бы ряд из нескольких ячеек, и в каждой бы менялись картинки?
Здавствуйте, спасибо за ваш материал, очень хороший слайдер. Только у меня тоже проблема с размещением нескольких таких блоков, возможно ли их разместить так, чтобы во всех одновременно менялись картинки. Я пробовал менять id и ставить цикл, но ничего не получается.
Я решил проблему со сменой картинок в нескольких контейнерах одновременно. Чуть позже выложу
Ок, Никитос, опиши, плиз, в двух словах как решил, думаю Росииянам! может пригодится .
я добился работы нескольких таких слайдеров, вот как:
css настройки изменились незначительно, вместо знака #(решетка) ставится знак .(точка):
сам скрипт, уже измененный, для работы нескольких блоков с изображениями:
теперь можно добавлять сколько угодно блоков в заданном ниже формате, от исходного кода отличается лишь тем, что добавлено свойство class="rotator" к div-у c id="rotator"
либо третья часть кода в картинках
если собрать 3 части кода вместе, заменить в последней части пути к изображениям, то получится рабочий образец.
пользуйтесь на здоровье
Простите меня, но я наверно очень тупой, что не могу дойти до способа использования нескольких блоков с изображениями, описанного
nikitos_one. Пожалуйста, если вам не трудно помогите мне соединить 3 кусочка в один целый, как например в самой статье. Пытался сделать это собсвенными силами — не получилось. Помогите пожалуйста!
Илья, тут тупых нет . Обратитесь кстати к Евгению, у него в магазине вроде-бы реализовано то, что вам требуется.
Никитос, отбой, из почты достал последний блок, еще раз спасибо, найденное решение оформил.
Кирилл вы, вроде, писали что получили у третий блок по почте и оформили его (я об скрипте который выводит несколько таких блоков на одной странице) Что я не делаю не получается этот вариант скрипта запустить. Не могли бы выложить его или указать где этот скрипт работает?
Все разобрался, жаль у вас нет возможности редактировать свои комментарии до модерации.
Санек, я честно не в курсе о чем речь, но здорово что удалось разобраться, на самом деле редактирование комментов в WP до публикации я не встречал, да и я их сам редактирую, если они адекватные
А скорость смены картинок в нем можно устанавливать? Не вижу, где это, пардон. )
Привет Мона.
Тут интервал между сменами.
Тут скорость появления/исчезания:
Спасибо, работает!
Скрипт отличный, работает норм, но вот я что-то не понял некоторых вещей:
1. Почему картинки смещаются вправо, как его отцентрировать. Убирал всё, что только можно — нифига.
2. Как его вообще поставить в шапку сайта. Как в неё попасть ?
3. Как сделать так, чтобы отображаемые в скрипте картинки работали как фон в шапке, а поверх этого меняющегося фона я мог бы наложить постоянные картинки. То есть, таблица шапки сайта разбита на две ячейки. Вот нужно установить меняющийся фон таблицы, а в ячейках стоят картинки, которые не меняются и отображаются поверх фона, ну или поверх этого скрипта... Это возможно с этим скриптом ?
Этот скрипт предназначен скорее для более простых применений. Если вы делаете сайт на одной из популярных CMS то проще будет найти подходящий готовый модуль.
Это видимо вы сейчас про джумлу? найти модуль и любоваться на тонны ненужного кода. Хочешь что-то качественное и легкое — пиши ручками и будет счастье=)
В модулях джумлы сложно найти лишний код в силу их простоты, но я имел ввиду другое — если есть жесткие временные рамки то быстрее найти подходящий модуль, выпилить из него лишнее и не изобретать велосипед, хотя это иногда занятно.
Здравствуйте, вариант с одним блоком работает, а вот с несколькими нет. Пишет ошибку «missing ) after for-loop control» (((((
Привет, Алла, думаю вам стоит скооперироваться с Никитосом, он в своем комментарии описал способ, как сделать несколько меняющихся изображений.