(a)Slideshow — jQuery плагин для организации слайд-шоу


Решился потренироваться в написании jQuery плагинов, и вот предлагаю на суд общественности мой первый плагин…


Данный плагин позволяет организовать мини-презентацию из любых DOM элементов, он прост в использовании и вполне может Вам пригодиться. Ну от слов к делу.

Для начала нам понадобится контент для нашего слайд-шоу. Нам подойдут любые теги <p>, <img>, <div> и т.д:

  1. <div id="MySlideshow"><!-- обертка нашего слайд-шоу -->
  2.     <p>Some text... on slide one</p>
  3.     <img src="img/image_0.jpg" alt="It's slide number two"/>
  4.     <img src="img/image_1.jpg" alt="It's slide number three"/>
  5.     <p><label>Title</label>Some text... on slide four</p>
  6.     <img src="img/image_2.jpg" alt="It's slide number five"/>
  7. </div>


Теперь подключим JavaScript (jquery и плагин) и файл стилей:
  1. <link href="js/jquery.aslideshow/simple/styles.css" media="screen" rel="stylesheet" type="text/css" />
  2. <script type="text/javascript" src="js/jquery.js?ver=1.2.6"></script>
  3. <script type="text/javascript" src="js/jquery.aslideshow.js"></script>


Инициализация:
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3.     $('#MySlideshow').slideshow();
  4. });
  5. </script>

Каков же будет результат вы можете посмотреть на домашней страничке проекта ;)

Конфигурация


В качестве заголовка слайдов берется атрибут «alt» для картинок, либо первый тег «label» для остальных слайдов…

Плагин так же имеет ряд настроек:
  1. $('#CustmSlideshow').slideshow({
  2.         width:320,      // ширина в пикселях
  3.         height:240,     // ширина в пикселях
  4.         index:0,         // начать со слайда номер N
  5.         content :{
  6.             'nextclick':false,   // переключаться на следующий слайд по клику на главное окно
  7.             'playclick':false,   // включать/выключать проигрывание слайд-шоу по клику на главное окно
  8.             'playframe':true,  // отображать вначале слайд "Play Now!"
  9.             'imgresize':false,  // изменять размер картинок под размер слайд-шоу
  10.             'imgcenter':true   // выравнивать картинки по центру (пока не работает)
  11.         },
  12.         controls :{         // элементы управления
  13.             'hide':true,    // всплывающий тулбар
  14.             'first':true,    // кнопка первый слайд
  15.             'prev':true,    // кнопка предыдущий слайд (если это первый, идем на последний слайд)
  16.             'play':true,    // запуск слайд-шоу
  17.             'next':true,    // кнопка следующий слайд (если это последний, идем на первый слайд)
  18.             'last':true,    // кнопка последний слайд
  19.             'help':true,    // кнопка отображения строки помощи
  20.             'counter':true  // отображение номера текущего слайда
  21.         },
  22.         slideshow :{
  23.             'time':3000,  // задержка между сменой слайдов
  24.             'title':true, // отображать заголовок или нет
  25.             'panel':true, // отображать панель управления или нет
  26.             'help':"Hello World!" // текст строки помощи
  27.  
  28.         }
  29.     });


Скачать


Скачать данный плагин можно используя либо доступ к SVN'у:
svn checkout http://a-slideshow.googlecode.com/svn/trunk/ a-slideshow-read-only


Либо в архиве:

http://code.google.com/p/a-slideshow/downloads/list
http://plugins.jquery.com/project/a-slideshow
+35
2 декабря 2008, 21:19
73

комментарии (31)

0
Stepler #
сила!
0
xzander #
отлично сделано. я вначале подумал, что вы повторили thickbox, ан нет, все совсем по-другому)
+6
AlexSpaizNet #
Не переношу такие слайдшоу… а если у меня картинок 150? Все грузить, а потом тупо показывтаь по style display:?

Простая трата канала и траффика… по мне так лучше иметь массив с данными — и в реальном времени подгружать картинки…
+2
xzander #
можно же усовершенствовать данный плагин и реализовать подгрузку в реальном времени
0
AntonShevchuk #
К сожалению подгрузка аяксом не позволяет ботам индексировать контент…

Собственно данный плагин не предназначен для организации фотогалерей — он ближе к презентациям, позволяет экономить место на странице при этом контент будет доступен для ботов и без-JS клиентов…
–1
Ueasley #
Можно выдавать список ссылок на картинки, но не показывать.
+2
cachealot #
из ваших слов можно сделать вывод что это будет презентации для ботев =)
если аякс уметь готовить то все все индексируют ;)
0
AntonShevchuk #
Можно сделать конечно и хождение по ссылкам внутри контента, т.е. если встречается тэг <a>, то пробывать подгружать контент аяксом (HTML или картинку)…

Занес в TODO следующей версии… :)
0
grinka #
Как раз такую следующую версию давно жду :)
Никак не удаётся выделить время для самостоятельного написания, но хотелось бы именно иметь возможность подгружать какие-то слайды через AJAX. Причём, имхо, логично было бы указать список слайдов при инициализации. То есть типа

<script type="text/javascript">
$(document).ready(function() {
$('#MySlideshow').slideshow('slideslist1.xml');
});
</script>


И в том файлике уже указывать например

<slides>
<slide url='http://mydomain.com/slides/slide1.html' />
<slide url='http://mydomain.com/images/smallBunny.jpg' />
</slides>


Или же вообще при инициализации указать массив «слайдов»

<script type="text/javascript">
$(document).ready(function() {
$('#MySlideshow').slideshow({
'http://mydomain.com/slides/slide1.html',
'http://mydomain.com/images/smallBunny.jpg'
});
});
</script>


0
AntonShevchuk #
предпологаю формат подачи слайдов следующим образом:
<a href=«domain.com/slide.jpg»>Slide 01 — Title</a>

<a href=«domain.com»>Slide title</a>
+1
AntonShevchuk #
<a href=«domain.com/slide01.jpg»>Slide 01 — Title</a>
<a href=«domain.com/slide02.jpg»>Slide 02 — Title</a>
<a href=«domain.com/slide03.html»>Slide 03 — Title</a>

Ну и т.д.

После инициализации слайдшоу — каждый айтем будет подгружаться аяксом…
0
grinka #
Логично. А нельзя ли всё же сделать вариант, когда весь этот список подгружается извне? У меня, например, есть наборы банеров/картинок, повторяющиеся от страницы к странице. Хотелось бы весь блок администрировать в одном месте :)

Можно, конечно, вынести во внешний файл, который будет вставляться в каждую страницу, но это уже слишком жёсткая привязка к серверу/приложению. А так представляете: десяток сайтов использует набор слайдов с одного центрального сервера, и набор этот только на этом сервере модифицируется.

PS: Возник сразу доп. вопрос — а AJAX у нас кроссдомейно работает ли???
0
grinka #
Будем ждать реализации :)
0
AntonShevchuk #
В SVN уже закомитил
На хостинги так же скоро выложу
Документация обновилась…
0
grinka #
Погонял, работает. Хотя, если честно, даже с документацией не сразу вкурил, что там что :)
И ещё вопрос: а почему везде используется вот такой формат:

<a href="img/image_0.jpg" title="Camomile"/>Slide no.1</a>

Тэг сам закрывается, а затем ещё и просто закрывающий. Это ж, насколько я могу судить, невалидно?
0
AntonShevchuk #
это очепятка
0
grinka #
Ок :)
А то я уж было начал напрягаться, что что-то важное в этой жизни пропустил :)
0
AlexSpaizNet #
xml хороше использовать при статике… или как кешь… а вот в динамике — я за массив данных… и им крутить как хочешь…
0
grinka #
Я б голосовал за универсальность. То бишь чтобы можно было выбрать либо ссылку на XML, либо массив данных.
В любом случае реализация уже имеется вот в таком виде.
0
9k1 #
Ну видимо речь не идет о 150 штуках а как раз о десятке. Просто автору нужно это обозначить в описании
0
harhan #
ну для 150 картинок может стоит использовать другое решение? А это оставить где полегче… ну например если к статье лепится 5-6 картинок, то имхо это решение вполне подойдет.
0
aiydas #
Полностью согласен… Тем более, в jQuery с асинхронной передачей проблем вапще нету)
0
mariachi #
зато потом можно все картинки оч быстро показать и получится как флеш анимация… :)
0
AntonShevchuk #
Сделано пробуйте…
В качестве слайдов можно исопльзовать ссылки на картинки (по умолчанию включено) и внутренние страницы (выкл)
0
CharnaD #
классно!!! правда визуально не сразу понятно куда тыкать надо.
0
9k1 #
Хорошо бы работающий пример, вместо скриншота. А по нему, получилось кажется неплохо.
+2
John_Cherep #
112 КБ =(
0
AntonShevchuk #
Это с примером и картинками :)
0
John_Cherep #
про картинки чегой то не подумал.

ну, тогда молодец =)
+1
fwlancer #
112 КБ это с примером (картинки итд). Упакованный скрипт занимает 4кб.
0
Yorik #
отличная вещь! переверстал «под себя», настроил, но вот проблема: как изменить анимацию смены слайда?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.