jCarousel это jQuery карусель, плагин для управления данными, отображаемых в виде горизонтального или вертикального списка. Данные могут быть представлены как обычный HTML контент или могут быть загружены с помощью AJAX. Списку можно задать прокрутку вперед или назад, с анимацией или без нее.

Источник

Скачать

Описание

Для работы jQuery-карусели необходимо в html-файле создать следующую структуру:

1
2
3
<ul id="mycarousel" class="jcarousel-skin-name">
   <!-- The content goes in here -->
</ul>

Плагин автоматически создаст необходимую HTML-обертку вокруг элемента <ul>. Атрибут class используется для указания скина карусели. После инициализации плагина HTML код будет выглядеть так:

1
2
3
4
5
6
7
8
9
10
11
12
<div class="jcarousel-skin-name">
   <div class="jcarousel-container">
      <div class="jcarousel-clip">
         <ul class="jcarousel-list">
            <li class="jcarousel-item-1">First item</li>
            <li class="jcarousel-item-2">Second item</li>
         </ul>
      </div>
      <div disabled="disabled" class="jcarousel-prev jcarousel-prev-disabled"></div>
      <div class="jcarousel-next"></div>
   </div>
</div>

Установка

Для использования плагина jCarousel, вам необходимо подключить библиотеку jQuery, плагин и скин для него ( css файл)

1
2
3
<script type="text/javascript" src="/path/to/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/path/to/lib/jquery.jcarousel.min.js"></script>
<link rel="stylesheet" type="text/css" href="/path/to/skin/skin.css" />

Инициализация jQuery карусели

1
2
3
4
5
jQuery(document).ready(function() {
   jQuery('#mycarousel').jcarousel({
      // Configuration goes here
   });
});

Настройка

В архиве с плагином имеется несколько готовых скинов (css файлы), так же вы можете создать свой скин на основе одного из них.

Динамическая загрузка контента

Используя callback-функцию itemLoadCallback вы можете динамически создавать элементы <li>

1
2
3
4
5
jQuery(document).ready(function() {
   jQuery('#mycarousel').jcarousel({
      itemLoadCallback: itemLoadCallbackFunction
   });
});

itemLoadCallbackFunction это JavaScript функция, которая будет вызвана, когда необходимые элементы карусели будут загружены. Функции передаетя два параметра: ссылка на экземпляр карусели и флаг, которые указывает текущее состояние карусели (‘init’, ‘prev’ или ‘next’).

1
2
3
4
5
6
7
8
9
function itemLoadCallbackFunction(carousel, state){
   for (var i = carousel.first; i <= carousel.last; i++) {
      // Check if the item already exists
      if (!carousel.has(i)) {
         // Add the item
         carousel.add(i, "I'm item #" + i);
      }
   }
};

jCarousel имеет метод add(), позволяющий указывать индекс создаваемого элемента и индекс элемемента для обновления содержимого. Если элемент уже существует, то его содержание будет обновлено. Вы можете использовать в качестве ссылки на первый и последний видимые элементы  переменные carousel.first и carousel.last.

jCarousel содержит множество параметров, позволяющих управлять видимостью и поведением карусели.

Параметры:

  • параметр
    значение по умолчанию
    описание
  • vertical
    false
    позволяет изменить способ показа с горизонтальной прокруткой на вертикальную
  • start
    1
    Индекс элемента с которого начинается показ
  • offset
    1
    Индекс элемента с которого будет происходить инициализация
  • size
    количество элементов <li>, если размер не указан явно
    Количество элементов для работы плагина
  • scroll
    3
    На сколько элементов будет происходить прокрутка
  • visible
    null (число)
    Если задано, ширина/высота пунктов будет вычислена и установлена в зависимости от ширины/высоты обрыва, так, чтобы указанное число пунктов было видимо.
  • animation
    «fast»
    Скорость прокрутки элементов. Возможны значения "slow","fast", 0 (без анимации)
  • easing
    null (строка)
    Название эффекта (смотрите документацию jquery)
  • auto
    0
    Задает интервал автоматической прокрутки содержимого. При значение 0 автопрокрутка отключена
  • wrap
    null
    Определяет поведение по достижению первого и последнего пункта (зацикливать или нет). Возможны значения "first", "last" и "both"
  • initCallback
    null (строка)
    Пользовательская функция, вызываемая при инициализации карусели. Передается два параметра: экземпляр карусели и состояние (init, reset или reload)
  • itemLoadCallback
    null
    Пользовательская функция, вызываемая при загрузке объектов. Передается два параметра: экземпляр карусели и состояние (init, reset или reload)
  • itemFirstInCallback
    null
    Пользовательская функция, вызываемая (по завершению анимации) когда элемент становится первым в зоне видимости поля карусели. Передается 4 параметра: экземпляр карусели, ссылка на элемент <li> этого объекта, индекс, указывающий позицию элемента в списке и состояние карусели (prev, next, init)
  • itemFirstOutCallback
    null
    Пользовательская функция, вызываемая (по завершению анимации) когда элемент перестает быть первым в зоне видимости поля карусели. Передается 4 параметра: экземпляр карусели, ссылка на элемент <li> этого объекта, индекс, указывающий позицию элемента в списке и состояние карусели (prev, next, init)
  • itemLastInCallback
    null
    Пользовательская функция, вызываемая (по завершению анимации) когда элемент становится последним в зоне видимости поля карусели. Передается 4 параметра: экземпляр карусели, ссылка на элемент <li> этого объекта, индекс, указывающий позицию элемента в списке и состояние карусели (prev, next, init)
  • itemLastOutCallback
    null
    Пользовательская функция, вызываемая (по завершению анимации) когда элемент перестает быть последним в зоне видимости поля карусели. Передается 4 параметра: экземпляр карусели, ссылка на элемент <li> этого объекта, индекс, указывающий позицию элемента в списке и состояние карусели (prev, next, init)
  • itemVisibleInCallback
    null
    Пользовательская функция, вызываемая (по завершению анимации) когда элемент находится в зоне видимости поля карусели. Передается 4 параметра: экземпляр карусели, ссылка на элемент <li> этого объекта, индекс, указывающий позицию элемента в списке и состояние карусели (prev, next, init)
  • itemVisibleOutCallback
    null
    Пользовательская функция, вызываемая (по завершению анимации) когда элемент не входит в зону видимого поля карусели. Передается 4 параметра: экземпляр карусели, ссылка на элемент <li> этого объекта, индекс, указывающий позицию элемента в списке и состояние карусели (prev, next, init)
  • buttonNextCallback
    null
    Пользовательская функция, вызываемая при изменение состояния кнопки «next». При помощи этой функции можно управлять поведением кнопки «next». Передается 3 параметра: экземпляр карусели, ссылка на элемент управления и флаг, показывающий состояние кнопки (enabled/disabled)
  • buttonPrevCallback
    null
    Пользовательская функция, вызываемая при изменение состояния кнопки «prev». При помощи этой функции можно управлять поведением кнопки «prev». Передается 3 параметра: экземпляр карусели, ссылка на элемент управления и флаг, показывающий состояние кнопки (enabled/disabled)
  • buttonNextHTML
    <div></div>
    HTML код генерируемый для кнопки «next». При значение null кнопка не будет создана
  • buttonPrevHTML
    <div></div>
    HTML код генерируемый для кнопки «prev». При значение null кнопка не будет создана
  • buttonNextEvent
    «click»
    Событие кнопки по которому карусель будет прокручена вперед
  • buttonPrevEvent
    «click»
    Событие кнопки по которому карусель будет прокручена назад
  1. Aleksey :

    Здравствуйте.У меня возникла проблема с каруселью. Она нормально отображается во всех браузерах ,кроме ie9 . Даже в 6ом IE все работает как надо.
    ВО всех браузерах страница выглядит следующим образом : http://s009.radikal.ru/i307/1102/ed/cc2082d08eb7.jpg
    а в ие9:
    http://s005.radikal.ru/i212/1102/b8/f7d55cf058c1.jpg

    Заранее спасибо за любую помощь по проблеме.

    [Ответить]

  2. Gorbachev :

    Я думаю, это проблема в самой карусели

    [Ответить]

  3. Mickey :

    Вопрос следующего порядка: если элементов списка не хватает для заполнения строки (горизонтальная карусель, wrap:’circular’), плагин дополняет строку пустыми li. Можно ли как-нибудь сделать, чтоб вместо пустых элементов заново шли существующие?

    [Ответить]

    AlexSol отвечает:

    попробуйте параметр wrap: ‘circular’

    [Ответить]

    Milghur отвечает:

    Как решили проблему?

    [Ответить]

  4. Олег :

    Как изменить размер картинок в карусели?

    [Ответить]

    AlexSol отвечает:

    это в css
    jcarousel/skins/[имя скина]/skin.css

    [Ответить]

  5. Олег :

    Спасибо, уже разобрался.

    [Ответить]

  6. Артем :

    А как изменить навигацию с цифр на строки? Чтобы вместо «1,2,3,4….» были к примеру «Первая картика, вторая картинка…» ?

    [Ответить]

  7. Дмитрий :

    Привет, может поможешь, проблема с каруселью, не знаю куда копать.
    У меня карусель представлена в виде картинок, каждая картинка в виде ссылки на свой раздел.
    Таких картинок примерно 6-9

    все работает как надо, вертится, грузится и т.д. Если страница загружается первый раз карусель также грузится как надо. Но вот если нажимать на картинку в карусели по ссылке, то открывается другой раздел (дизайн общий для всех разделов) и карусель ведет себя странно – буквально на секунду показываются все картинки карусели в 3-4 ряда, потом схлопываются и снова рабочая карусель. Вот это появление всех картинок и схлопывание раздражает заказчика. Как будто сначала вываливается содержимое, потом подгружается скрипт, оборачивает элементы в свои стили, и применяется css. Может возможно поставить свойство изначально ul visibility:hidden, и когда скрипт уже прогрузится, убрать это свойство.

    Не знаю можно ли кидать ссылки, поэтому выше привел часть html, но глюк можно посмотреть пока тут vtyurinkhv.0fees.net – бесплатный хостинг, тестю там проект, чтобы к заказчику каждый раз с ноутбуком не бегать.

    [Ответить]

    AlexSol отвечает:

    Примерно так

    JS:

    var count=0;
    jQuery(document).ready(function() {
    total = jQuery(‘#slider li’).length
    jQuery(‘#slider li img’).load(function(){
    count++;
    if(count==total){jQuery(‘#mycarousel’).jcarousel()}
    })
    })

    CSS:

    #slider{
    height:184px;
    overflow:hidden;
    }

    [Ответить]

  8. Степан :

    Добрый день! Установил карусельку. В Опере наблюдаю странный глюк – если сделать на кнопке влево\вправо двойной клик – открывается контекстное меню Оперы «Искать.., Копировать…, Добавить в закладки…». При этом демо с сайта разработчика работает нормально. Скрипт не менял. Может кто сталкивался?

    [Ответить]

  9. Степан :

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

    [Ответить]

  10. Владимир :

    День добрый! Подскажите пожалуйста как сделать так, что бы при загрузки страницы скрипт карусели не подгружал элементы LI внутрь .
    Хочется первые элементы LI создавать сразу в коде страницы (что бы их скормить поисковикам), а уже потом при нажатии кнопок вперед или назад их заменять скриптом карусели.

    Заранее спасибо!

    [Ответить]

    AlexSol отвечает:

    на странице присутствует только список,карусель это надстройка. если отключите js то увидите это

    [Ответить]

  11. Екатерина :

    Здравствуйте!А не подскажете как решить мою проблемку.Вставляю свои картинки, а отображается только верхняя половина каждой картинки, примерно пикселей 75, а картинка в высоту 640. На скрине ниже более подробно. Всю таблицу стилей перекопала чета,не нашла как решить. Помогите,люди добрые.
    http://i024.radikal.ru/1106/02/dac14564b751.jpg

    [Ответить]

    AlexSol отвечает:

    файл скина:
    .jcarousel-skin-tango .jcarousel-item {
    height: 75px;
    width: 75px;
    }

    [Ответить]

  12. anton :

    Добрый день. Немного отстраненно, но может быть поможете.
    прикручиваю jCarousel к Drupal6.

    яваскрипт динамичеки приделывает оболочку ТОЛЬКО к первой библиотеке,
    ————
    ## library1

    ## library2

    ———
    вторая библиотека идет БЕЗ оболочки почему-то.
    никто не скажет почему и как решить эту проблему? может в скрипте какое условное ограничение есть? дело в том что я в коде этого не могу понять.
    Надеюсь на Вашу помощь, несколько недель уже бьюсь над задачей.
    Спасибо, с уважением!

    [Ответить]

Оставьте свой комментарий