Иногда в текст текст 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 с небольшими уточнениями.
А у меня появляются две картинки но третья не появляется а просто пустое место но ссылка остаётся на сайт который дан предыдущей,картинке как это исправить?
Всё я решил эту проблему,но как убрать таблицу вокруг изображения?
Можно-ли сделать так чтобы картинки менялись в случайном порядке?
Как решили проблему?
Видимо под таблицей имеется ввиду синий бордер, его можно убрать присвоив тегу img css-стиль: border:none;.
Чтобы смена картинок происходила в случайном порядке, надо раскомментировать соответствующий кусок кода, добавленный в пример.
Ура!!! Решил задачу свою с отступами.
Это оказалось
* {
margin: 0;
padding: 0;
}
и во всех обнулось, т.к.
Класно при этом работает.
и параметр margin-left: 0px;
не надо подстраивать
div#rotator {position:relative; height:180px; margin-left: 0px;}
Кому интересно может смотреть, починил...
www.bis22.ru
Да, в эту сторону и нужно было докапывать с FireBug-ом .
Следующий сайт рекомендую делать на Joomla или другом несложном движке.
Искал простой ротатор, везде все с наворотами. Бльшое спасибо!!!
С уважением, вебджем.рф!
А у меня такой вопрос: А как реализовать таких несколько вряд картинок с сменным фоном??? У меня получается так что сначала появляется фото в одной из десяти, потом всё исчезает и появляется только в первом диве((((
помогите плизззз
Я пока что не понимаю чего вы хотите добиться, может дадите ссылку на текущее состояние разработки?
А Вы можете рассказать как вставить такую штуку в шаблон джумлы, вместо картинки в шапке...
Можно сделать так: все что находится между тегами <style type="text/css"> и </div> в примере исходного кода разместить в нужном месте файла index.php шаблона. Но лучше, думаю, будет создать пользовательский модуль с этим же содержимым и публиковать его в нужном месте шапки.
оо...чувствую что сложновато для меня...там же ограниченные по площади места для отображения модулей.
Ну если вы скорее работник планетария, чем сайтовод, то вам просто надо будет почитать побольше статей про устройство шаблонов и применение модулей джумлы, либо попросить сделать все фрилансера за пару сотен .
извините за флуд, но правда, я начинающая пока((
нашла где меняется размер, но какой тип модуля создать чтобы этот код вывести? что вообще лучше создать?
Нормальный флуд. Если вы про размер модуля, то он в этом случае будет равен размеру картинки. Модуль с пользовательским кодом, не помню как точно называется. Я вообще посоветовал модуль, т.к. это удобнее в плане гибкости (снять/показать), чем вносить изменения в шаблон всего сайта. Кстати на joomlaforum.ru подобные вопросы рассмотрены по нескольку раз .
У меня тоже проблема как у Максима, только не знаю как решить. «А у меня появляются две картинки но третья не появляется а просто пустое место но ссылка остаётся на сайт который дан предыдущей,картинке как это исправить?». Подскажите пожалуйста.
Есть ссылка на страницу с проблемой?
Кстати может Максим подписался на комментарии и расскажет? Максим, ты тут?