Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.09.2011, 11:53
Аватар для Szen
Интересующийся
Отправить личное сообщение для Szen Посмотреть профиль Найти все сообщения от Szen
 
Регистрация: 22.10.2009
Сообщений: 20

Стильный слайдер на базе jQuery
Предлагаю небольшой скрипт необычного слайдера. Ревлизован на базе jQuery.

Описание

Особенность слайдера в том, что он может прокручивать сотни изображений или любого другого контента в ограниченном пространстве. Причем, все используемые изображения или контент будут доступны к индексированию поисковиками.

Слайдер работает в автоматическом режиме и является неуправляемым.

Количество слайдеров на странице неограничено.

Скриншот

Внешне слайдер выглядит так:


Пример

Демка находится на сайте, кто захочет глянуть - пройдет. Да простят меня модераторы.
Демо стильного слайдера (ссылка внешняя!).

Установка

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

<div style="background: #000000; color: #ffffff;" id="spslider3">
  <div>Блок в слайдере 1</div>
  <div>Блок в слайдере 2</div>
  <div>Блок в слайдере 3</div>
  ...
  <div>Блок в слайдере N</div>
</div>


Вместо "Блок в слайдере n" размещаем картинки, текст или любой другой HTML-объект. Также, вложенные теги DIV можно заменить на SPAN. Стиль основного родительского блока можете иначе, чем предложил я (IMHO, черный блок смотрится лучше).

После подготовки структуры, в теле HEAD подключаем jQuery, скрипт слайдера и делаем вызов функции запуска работы слайдера. Весь код выглядит так:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://szenprogs.ru/scripts/spslider3/spslider3.js"></script>
<script type="text/javascript"><!-- 
  $(function(){
    $spslider3.ready(2000,'spslider3',150,300,10);
  });
// -->
</script>


Параметры вызова

$spslider3.ready(speed, id, width, height, padding)

  • speed - скорость смены блоков в слайдере, задается в миллисекундах.
  • id - ID блока со слайдером.
  • width - ширина каждого из 3-х внутренних блоков, задается в пикселях.
  • height - высота каждого из 3-х внутренних блоков, задается в пикселях.
  • padding - Поля между основным блоком и внутренними блоками, задается в пикселях.

Количество блоков со слайдером на одной странице неограничено. Достаточно создать новый блок с уникальным ID и выполнить вызов функции запуска.

Скрипт прикреплен к теме:
spslider3.zip

Приму и изучу все предложения и нарекания.

С уважением, Szen.

Дополнения:
2011.09.30: На основе скрипта сделан плагин для jQuery - jquery.threeslide

Последний раз редактировалось Szen, 30.09.2011 в 16:55. Причина: 2011.09.30 - дополнение
Ответить с цитированием
  #2 (permalink)  
Старый 30.09.2011, 14:48
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Зачем здесь jquery если слайдер не как плагин?

Почему нельзя назначить свой класс? зачем id.

$('#'+id).eq(0).find('.spslider3sld').eq(2). - как-то это жутковато. Попахивает никакой архитектурой.

doit это init?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #3 (permalink)  
Старый 30.09.2011, 15:11
Аватар для Szen
Интересующийся
Отправить личное сообщение для Szen Посмотреть профиль Найти все сообщения от Szen
 
Регистрация: 22.10.2009
Сообщений: 20

Gozar,
Думаю, не верно. init - инициализация. А у меня периодически выполняемая функция. Ничего умнее не придумал, как написать doit. Если есть лучшее предложение - приму.
Насчет плагина - даже не подумал. На днях перепишу.
Спасибо за совет!

Последний раз редактировалось Szen, 30.09.2011 в 15:16.
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2011, 15:42
Аватар для Szen
Интересующийся
Отправить личное сообщение для Szen Посмотреть профиль Найти все сообщения от Szen
 
Регистрация: 22.10.2009
Сообщений: 20

Доработка скрипта слайдера до плагина
Переделал скрипт под плагин для jQuery.

Формат блоков остался тот же самый:
<div style="background: #000000; color: #ffffff;" id="spslider3">
  <div>Блок в слайдере 1</div>
  <div>Блок в слайдере 2</div>
  <div>Блок в слайдере 3</div>
  ...
  <div>Блок в слайдере N</div>
</div>


Подключаем плагин в теле HEAD следующим кодом:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://szenprogs.ru/scripts/spslider3/jquery.threeslide.min.js"></script>
<script type="text/javascript"><!-- 
  $(function(){
    $('#spslider3').threeslide( { height: 300, width: 150, delay: 2000, padding: 10 } );
  });
// -->
</script>


Сам плагин выложен тут (полная и сжатая версия):
jquery.threeslide.zip
jquery.threeslide.min.zip
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2011, 19:14
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

$('#'+id).eq(0)
            .css('padding',p+'px')
            .css('width',(w*3+p*6)+'px')
            .css('height',(h+p*2)+'px')
            .css('position','relative')
            .css('overflow','hidden')
            .find('.spslider3sld')
                .css('float','left')
                .css('margin',p+'px')
                .css('overflow','hidden')
                .css('height',h+'px')
                .css('width',w+'px')
            ;
        ;

ууу... вызовы css можно превратить в один, передав объект
$.css({"top":"5px", "left":"0"})

..
зачем писать
$('#'+id)*!*.eq(0)*/!*

если элемент с любым айдишником всегда уникален ? т.е. один

..............
if(spd==undefined || spd==0 || spd=='') spd=1200;
        if(id==undefined || id==0 || id=='') id='spslider3';
        if(w==undefined || w==0 || w=='') w=200;
        if(h==undefined || h==0 || h=='') h=400;
        if(p==undefined || p==0 || p=='') p=10;

заместо такой проверки преобразовывайте в boolean
var undef, def="defined";
alert([!!undef, !!def]);

или сразу так - часто это называют "настройкой по-умолчанию" (т.е. если аргумент не передан, его значение становится указанным)
var undef, def="defined";
alert([  *!*undef || "default" , def || "default"*/!* ]);


это вообще страсть. не могу понять принципа работы - он понятен только писавшему, к сожалению. Но, этот кусок ужасно выглядит.
var s=$('#'+id).eq(0).find('.spslider3imgi').eq(i).html();
        $('#'+id).eq(0).find('.spslider3sld').eq(0).html(s);
        if(i < this.len[id]-1) i++; else i=0;
        var s=$('#'+id).eq(0).find('.spslider3imgi').eq(i).html();
        $('#'+id).eq(0).find('.spslider3sld').eq(1).html(s);
        if(i < this.len[id]-1) i++; else i=0;
        var s=$('#'+id).eq(0).find('.spslider3imgi').eq(i).html();
        $('#'+id).eq(0).find('.spslider3sld').eq(2).html(s);
        if(i < this.len[id]-1) i++; else i=0;
Ответить с цитированием
  #6 (permalink)  
Старый 30.09.2011, 19:55
Аватар для Szen
Интересующийся
Отправить личное сообщение для Szen Посмотреть профиль Найти все сообщения от Szen
 
Регистрация: 22.10.2009
Сообщений: 20

melky,
ну, мы учимся. Часть бардака я уже вычистил и собрал это все в плагин. А вот про объект в css не знал (почемуто), поэтому, поправлю.
Ответить с цитированием
  #7 (permalink)  
Старый 02.10.2011, 13:32
Кандидат Javascript-наук
Отправить личное сообщение для Виктор Кон Посмотреть профиль Найти все сообщения от Виктор Кон
 
Регистрация: 19.07.2011
Сообщений: 135

А почему это надо делать с помощью jquery. Просто на js нисколько не сложнее. И тоже можно сделать самостоятельную процедуру (типа плагина)
Ответить с цитированием
  #8 (permalink)  
Старый 03.10.2011, 10:56
Аватар для Szen
Интересующийся
Отправить личное сообщение для Szen Посмотреть профиль Найти все сообщения от Szen
 
Регистрация: 22.10.2009
Сообщений: 20

Виктор Кон,
писать все ручками не вижу смысла. Зачем изобретать велосипед? Раз есть фреймворки, значит нужно ими пользоваться.

IMHO: Нормальный строитель не будет создавать кирпичи. Он просто построит из них дом.
Ответить с цитированием
  #9 (permalink)  
Старый 07.10.2011, 16:04
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Szen Посмотреть сообщение
Зачем изобретать велосипед? Раз есть фреймворки, значит нужно ими пользоваться.
Странный вывод. Разве не разумнее брать то, что нужно, а не то что есть. Несмотря на то, что задал вопрос явный тролль, вопрос вполне разумный. Какой кстати ты велосипед изобретаешь с десятью строчками кода?

Сообщение от Szen Посмотреть сообщение
IMHO: Нормальный строитель не будет создавать кирпичи. Он просто построит из них дом.
Ну он тот что написал этот скрипт пока что таджик с плакатом "я твой дом труба шатал". Ты дом чуть ли не вверх ногами строишь.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #10 (permalink)  
Старый 08.10.2011, 18:46
Интересующийся
Отправить личное сообщение для Nikolai-JS Посмотреть профиль Найти все сообщения от Nikolai-JS
 
Регистрация: 24.04.2011
Сообщений: 10

Критика, нелицеприятная...
Что такое слайдер?
Это приложение для отображения меняющейся графической и/или текстовой информации дополнительно к основному контенту(статья, новость). При этом пользователю необходимо знать, сколько контента(фото) содержит слайдер и какой показывается в данный момент. Т.е. инфа в виде "5 из 10" или как-то графически необходима. Так-же нужны кнопки для управления.

Так как ничего этого у вас нет, то ваше произведение я бы отнёс в категорию "рекламные баннеры".

Так как ваш "слайдер" выполняет одну единственную функцию - бесконечная прокрутка, то без ущерба можно заменить его на (Achtung!) анимированный GIF . Пользователь даже не заметит подмены!

PS: Надеюсь не убил вашу любовь к JavaScript.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть ли резиновый слайдер контента на jQuery Enxiro jQuery 10 28.02.2014 12:15
Зацените плагин слайдер на jQuery w411 Ваши сайты и скрипты 11 03.10.2011 19:49
jquery слайдер, анимация при переключении вкладки KiTaeZa Events/DOM/Window 1 05.09.2011 20:52
jQuery UI Slider - как синхронизировать слайдер со значнием? frightened jQuery 0 24.07.2011 00:19
mini slider - jquery (Слайдер) igsavenko Общие вопросы Javascript 0 05.05.2011 20:42