Иногда в текст текст 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 с небольшими уточнениями.
Андрей, билась тоже над этим.
Поставила во второй строчке margin-left:30%; (вместо 15px) -все выравнялось. но наверняка есть и ругой вариант))
еще вопрос такой-нет ли скрипта для такого слайд-ioje?yj чтоб внизу были маленькие картинки, а сверху одна-побольше,которая бы менялась сама. или при нажатии на одну из маленьких...
Ага, Татьяна, таких скриптов просто море, несколько ссылок из гугла, на вскидку: www.noupe.com/ajax/free-s...xes-scripts.html, sixrevisions.com/javascri...image_galleries/
Здравствуйте!
Помогите пожалуйста. У меня проблема вот в чем: нужно чтобы одна картинка плавно сменяла другую, а не так, что одна исчезала, потом вторая появлялась, т.е. как бы они запускались одновременно.
Заранее спасибо.
Доброго времени, а как сделать, что бы было 5-10 картинок, внизу, где 3 картинки я добавил еще, а оно показывает первые 3 и цикл повторяется.
Подскажите пожалуйста,а почему картинки меняются сверху-вниз,может я что-то не так сделал?
Появилось решение, как сделать показ картинок не с первой, а с рандомной (случайной)?
Привет всем. А можно ли на каждый слайд помесить блок с текстом. чтобы при появлении каждой картинки на ней выводился соответсвующий ей текст
спасибо!
Большое спасибо за скрипт! Прям вот то, что нужно
Добрый день! Почти то, что надо. Подскажите, пожалуйста, как изменить код, чтобы при открытии страницы одна картинка просто сменила другую? Заранее спасибо)
Думаю для этой задачи описанный скрипт несколько сложен, вот, например вариант (отсюда) показа случайно картинки при каждом открытии страницы:
<script language="JavaScript"> <!-- var a=Math.round(Math.random()*2) image = new Array(); image[0]="Carbon/1.jpg" image[1]="Carbon/2.jpg" image[2]="Carbon/3.jpg" document.write ("<img src="+image[a]+">"); //--> </script>
Благодарю за скриптик. Буду использовать