bxSlider — установка, настройки, примеры
Плагин bxSlider — отзывчивый jQuery-слайдер для контента. Наличие большого количества настроек позволяет адаптировать слайдер под конкретные нужды вашего проекта.
Преимущества:
- адаптируется под любое устройство;
- слайды сменяются как по горизонтали, так и по вертикали, есть режим выцветания (fade);
- слайды могут содержать изображения, видео или любое html-содержимое;
- работает на сенсорных экранах;
- для смены слайдов используются css-переходы, что даёт аппаратное ускорение;
- полный API обратного вызова и открытые методы (before, after, first, last, next, prev);
- хорошая поддержка браузерами: Firefox, Chrome, Safari, iOS, Android, IE7+.
Перейти на страницу с примерами
- Содержание:
- 1. Как установить bxslider
- 2.1. Общие настройки
- 2.2. Счётчик количества слайдов
- 2.3. Элементы управления
- 2.4. Автоматический показ слайдов
- 2.5. Карусель
- 2.6. Функции обратного вызова
- 2.7. Публичные методы
- 3.1. Пользовательские элементы управления
- 3.2. Галерея изображений с подписями
- 3.3. Появляющиеся кнопки управления
- 3.4. Галерея изображений с миниатюрами
1. Как установить bxslider
Шаг 1. Добавьте ссылки на необходимые файлы
Скачайте архив с файлами с официального сайта. Создайте на сервере папку с названием плагина, например, bxslider. Закачайте в неё файлы jquery.bxslider.min.js и jquery.bxslider.css. Для работы плагина добавьте в раздел head ссылки на файлы в следующем порядке:
1) ссылка на файл со стилями jquery.bxslider.css. Таблицу стилей подключайте в том случае, если не собираетесь вносить изменения во внешний вид слайдера;
2) ссылка на библиотеку jQuery;
3) ссылка на файл со скриптом jquery.bxslider.min.js.
<link href="путь_к_файлу_на_вашем_сервере/jquery.bxslider.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="путь_к_файлу_на_вашем_сервере/jquery.bxslider.min.js"></script>
Вместо строчки путь_к_файлу_на_вашем_сервере укажите реальный путь к файлу, хранящемуся на вашем сервере.
Если вы будете добавлять в слайдер видео или использовать функции перехода, то вам понадобятся ещё два файла из папки plugins скачанного архива: jquery.easing.1.3.js и jquery.fitvids.js.
Шаг 2. Создайте html-разметку
Создайте маркированный список с классом bxslider. Каждый элемент списка — отдельный слайд. В качестве содержимого может быть картинка, видео или другой html-контент.
<ul class="bxslider">
<li><img src="/images/pic1.jpg"></li>
<li><img src="/images/pic2.jpg"></li>
<li><img src="/images/pic3.jpg"></li>
<li><img src="/images/pic4.jpg"></li>
</ul>
Шаг 3. Вызовите bxslider
Вызовите функцию bxslider() для списка <ul class="bxslider"> с помощью jQuery.
<script>jQuery(document).ready(function(){
jQuery('.bxslider').bxSlider();
});</script>
2. Настройки bxslider
Слайдер — это некий объект, который имеет свойства и их возможные значения. Некоторые свойства уже активизированы при инициализации (вызове) слайдера. Поэтому пользовательская настройка слайдера заключается в отмене тех или иных свойств или в добавлении новых.
Например, captions: false означает, что подписи к слайдам отключены по умолчанию. Чтобы добавить вывод подписей к слайдам, нужно задать captions: true.
2.1. Общие настройки
Для каждого свойства первое значение — значение по умолчанию, во второй строчке перечислены все возможные варианты для этого свойства.
mode — тип перехода между слайдами.
mode: 'horizontal'
варианты: 'horizontal', 'vertical', 'fade'
speed — скорость смены слайдов
speed: 500
варианты: любое целое число
slideMargin — отступ между каждым слайдом.
slideMargin: 0
варианты: любое целое число
startSlide — индекс начального слайда (начинается с нуля).
startSlide: 0
варианты: любое целое число
randomStart — запуск слайдера с произвольного слайда.
randomStart: false
варианты: true или false
slideSelector — добавляет элемент-контейнер, который будет использоваться как слайдер.
slideSelector: ''
варианты: селектор jQuery
infiniteLoop — если задано true, при нажатии кнопки Next на последнем слайде будет осуществлён переход к первому слайду и наоборот.
infiniteLoop: true
варианты: true или false
hideControlOnEnd — если задано true, кнопка Next будет скрыта на последнем слайде и наоборот.
hideControlOnEnd: false
варианты: true или false
easing — тип перехода между слайдами. Если используются css-переходы, включаются значения transition-timing-function. Если css-переходы не используется, можно подключить плагин easing.
easing: null
варианты:
если используется CSS: 'linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'cubic-bezier(n,n,n,n)'.
Если используется плагин easing: 'swing', 'linear' и т.д.
captions — добавляет подписи к картинкам. Название берётся из значения атрибута title.
captions: false
варианты: true или false
ticker — бегущая строка из слайдов.
ticker: false
варианты: true или false
tickerHover — останавливает движение слайдов при наведении мышью. Не работает, если используются css-переходы.
tickerHover: false
варианты: true или false
adaptiveHeight — динамическая регулировка высоты слайдера в соответствии с высотой каждого слайда.
adaptiveHeight: false
варианты: true или false
adaptiveHeightSpeed — длительность перехода в миллисекундах при динамической регулировке высоты слайда, работает только для adaptiveHeight: true.
adaptiveHeight: 500
варианты: любое целое число
video — если какой-нибудь слайд содержит видео, установите video: true. Также подключите plugins/jquery.fitvids.js.
video: false
варианты: true или false
responsive — включает или отключает адаптивность слайдера.
responsive: true
варианты: true или false
useCSS — если задано true, для вертикальной и горизонтальной анимации слайдов будут использоваться css-переходы. В противном случае подключите плагин easing.
useCSS: true
варианты: true или false
preloadImages — если задано preloadImages:'all', все картинки будут загружены перед началом показа. В противном случае будет загружен только начальный слайд.
preloadImages: visible
варианты: 'all', 'visible'
touchEnabled — включает и отключает перелистывание слайдов пальцем для сенсорных экранов.
touchEnabled: true
варианты: true или false
swipeThreshold — количество пикселей, превышение которого выполнит переход слайдов.
swipeThreshold: 50
варианты: любое целое число
oneToOneTouch — если задано true, слайды, не использующие выцветание, будут перемещаться следом за пальцем.
oneToOneTouch: true
варианты: true или false
preventDefaultSwipeX — если задано true, сенсорный экран не будет двигаться вдоль оси X при листании слайдов пальцем.
preventDefaultSwipeX: true
варианты: true или false
preventDefaultSwipeY — если задано true, сенсорный экран не будет двигаться вдоль оси Y при листании слайдов пальцем.
preventDefaultSwipeY: false
варианты: true или false
2.2. Счётчик количества слайдов
pager — если задано true, будет выводиться индикатор количества слайдов.
pager: true
варианты: true или false
pagerType — если задано pagerType: 'full', счётчик будет содержать цифровые ссылки для каждого слайда, если задано 'short', то будет запись вида 1/5.
pagerType: 'full'
варианты: 'full', 'short'
pagerShortSeparator — тип разделителя цифр для pagerType: 'short'.
pagerShortSeparator: ' / ' варианты: любой символ
pagerSelector — регистрирует элемент-контейнер с указанным классом или идентификатором, который содержит счётчик.
pagerSelector: ''
варианты: jQuery селектор
pagerCustom — родительский элемент, используемый в качестве счётчика. Должен содержать <a data-slide-index="x"> для каждого слайда. Не используется для динамической карусели.
pagerCustom: null
варианты: jQuery селектор
buildPager — если установлен, функция вызывается на каждый слайд, возвращаемое значение используется в качестве мини-эскиза в счётчике.
buildPager: null
варианты: function(slideIndex)
2.3. Элементы управления
controls — если задано true, будут показаны элементы управления Next / Prev.
controls: true
варианты: true или false
nextText — текст, который используется для кнопки Next.
nextText: 'Next'
варианты: строка символов
prevText — текст, который используется для кнопки Prev.
prevText: 'Prev'
варианты: строка символов
nextSelector — элемент-контейнер для кнопки Next.
nextSelector: null
варианты: jQuery селектор
prevSelector — элемент-контейнер для кнопки Prev.
prevSelector: null
варианты: jQuery селектор
autoControls — если задано true, будут добавлены кнопки Start / Stop.
autoControls: false
варианты: true или false
startText — текст, который будет использоваться для кнопки Start.
startText: 'Start'
варианты: строка символов
stopText — текст, который будет использоваться для кнопки Stop.
stopText: 'Stop'
варианты: строка символов
autoControlsCombine — когда слайдшоу запущено, будет отображаться только кнопка Stop и наоборот.
autoControlsCombine: false
варианты: true или false
autoControlsSelector — элемент-контейнер для кнопок Start / Stop.
autoControlsSelector: null
варианты: jQuery селектор
2.4. Автоматический показ слайдов
auto — настраивает автоматическую смену слайдов.
auto: false
варианты: true или false
pause — количество времени в миллисекундах между каждым переходом.
pause: 4000
варианты: любое целое число
autoStart — автоматическая смена слайдов начинается при загрузке слайда. Если указано false, показ начнётся при нажатии на кнопку Start.
autoStart: true
варианты: true или false
autoDirection — направление смены слайдов (с начала или с конца).
autoDirection: 'next'
варианты: 'next', 'prev'
autoHover — автоматический показ слайдов будет остановлен при наведении мышью на слайдер.
autoHover: false
варианты: true или false
autoDelay — время задержки с миллисекундах перед запуском показа слайдов .
autoDelay: 0
варианты: любое целое число
2.5. Карусель
minSlides — минимальное количество слайдов для показа. Слайды будут уменьшены (обрезаны), если карусель станет меньше первоначального размера.
minSlides: 1
варианты: любое целое число
maxSlides — максимальное количество слайдов. Слайды будут увеличены в размере, если карусель станет больше оригинального размера.
maxSlides: 1
варианты: любое целое число
moveSlides — количество слайдов, перемещающихся вместе при смене слайда. Количество должно быть больше или равно minSlides и меньше или равно maxSlides. По умолчанию используется количество полностью видимых слайдов.
moveSlides: 0
варианты: любое целое число
slideWidth — ширина каждого слайда, обязательна для карусели.
slideWidth: 0
варианты: любое целое число
2.6. Функции обратного вызова
onSliderLoad — выполняет сразу после того, как слайдер полностью загружен.
onSliderLoad: function(){}
варианты: function(индекс текущего слайда){ // ваш код здесь }
onSlideBefore — выполняется непосредственно перед каждой сменой слайда.
onSlideBefore: function(){}
варианты: function($slideElement, oldIndex, newIndex){ // ваш код здесь }
принимаемые аргументы:
$slideElement: jQuery элемент целевого элемента
oldIndex: индекс элемента предыдущего слайда (до перехода)
newIndex: индекс конечного элемента (после перехода)
onSlideAfter — функция выполняется сразу же после каждого перехода между слайдами. Аргументом функции является текущий элемент слайда (когда переход завершается).
onSlideAfter: function(){}
варианты: function($slideElement, oldIndex, newIndex){ // ваш код здесь }
arguments:
$slideElement: jQuery элемент целевого элемента
oldIndex: индекс элемента предыдущего слайда (до перехода)
newIndex: индекс конечного элемента (после перехода)
onSlideNext — функция выполняется непосредственно перед каждым переходом по кнопке Next. В качестве аргумента функция принимает следующий элемент перехода.
onSlideNext: function(){}
options: function($slideElement, oldIndex, newIndex){ // ваш код здесь }
arguments:
$slideElement: jQuery элемент целевого элемента
oldIndex: индекс элемента предыдущего слайда (до перехода)
newIndex: индекс конечного элемента (после перехода)
onSlidePrev — функция выполняется непосредственно перед каждым переходом по кнопке Prev. В качестве аргумента функция принимает предыдущий элемент перехода.
onSlidePrev: function(){}
options: function($slideElement, oldIndex, newIndex){ // ваш код здесь }
arguments:
$slideElement: jQuery элемент целевого элемента
oldIndex: индекс элемента предыдущего слайда (до перехода)
newIndex: индекс конечного элемента (после перехода)
2.7. Публичные методы
goToSlide — выполняет переход между слайдами к слайду с заданным индексом (отсчёт начитается с нуля).
slider = $('.bxslider').bxSlider();
slider.goToSlide(3);
goToNextSlide — выполняет переход к следующему слайду.
slider = $('.bxslider').bxSlider();
slider.goToNextSlide();
goToPrevSlide — переход к предыдущему слайду.
slider = $('.bxslider').bxSlider();
slider.goToPrevSlide();
startAuto — запускает автоматический показ слайдов. Используйте аргумент false, чтобы предотвратить поведение кнопки от обновления.
slider = $('.bxslider').bxSlider();
slider.startAuto();
stopAuto — останавливает автоматический показ слайдов. Используйте аргумент false, чтобы предотвратить поведение кнопки от обновления.
slider = $('.bxslider').bxSlider();
slider.stopAuto();
getCurrentSlide — возвращает текущий активный слайд.
slider = $('.bxslider').bxSlider();
var current = slider.getCurrentSlide();
getSlideCount — возвращает общее количество слайдов в слайдере.
slider = $('.bxslider').bxSlider();
var slideQty = slider.getSlideCount();
reloadSlider — обновляет слайдер. Полезно в случае добавления слайдов на лету.
slider = $('.bxslider').bxSlider();
slider.reloadSlider();
destroySlider — разрушает активный слайдер, возвращая все элементы в первоначальное состояние.
slider = $('.bxslider').bxSlider();
slider.destroySlider();
3. Примеры настройки и оформления слайдера
Таблица стилей из архива плагина задаёт однообразный и скромный вид слайдера. Воспользуйтесь вариантами ниже или поэкспериментируйте самостоятельно, чтобы украсить ваш слайдер. Для создания адаптивного слайдера необходимо поместить его разметку в блок с относительной шириной, заданной в %. Чтобы отключить текст кнопок управления Next и Prev, задайте в настройках плагина nextText: '', prevText: ''.
3.1. Пользовательские элементы управления
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://ваш_сайт/bxSlider/jquery.bxslider.js"></script>
<script>jQuery(document).ready(function(){
jQuery('.bxslider').bxSlider({
pager: false, // отключаем индикатор количества слайдов
nextText: '', // отключаем текст кнопки Next
prevText: '' // отключаем текст кнопки Prev
});
});</script>
<ul class="bxslider">
<li><img src="http://ваш_сайт/flower-example-10.jpg" /></li>
<li><img src="http://ваш_сайт/flower-example-9.jpg" /></li>
<li><img src="http://ваш_сайт/flower-example-3.jpg" /></li>
<li><img src="http://ваш_сайт/flower-example-5.jpg" /></li>
</ul>
* {box-sizing: border-box;}
ul {
margin: 0;
padding: 0;
list-style: none;
}
.bx-wrapper {
width: 440px;
margin: 0 auto;
position: relative;
}
.bx-wrapper img {
width: 100%;
max-width: 100%;
display: block;
}
.bx-prev, .bx-next {
display: inline-block;
height: 40px;
width: 40px;
line-height: 40px;
text-align: center;
position: absolute;
z-index: 3;
bottom: 20px;
right: 70px;
border-radius: 3px;
background: white;
text-decoration: none;
outline: none;
transition: .2s ease-in-out;
}
.bx-next {right: 20px;}
.bx-prev:before, .bx-next:before {
font-size: 16px;
color: #9a9a9a;
font-family: "FontAwesome";
}
.bx-prev:before {content: "\f104";}
.bx-next:before {content: "\f105";}
3.2. Галерея изображений с подписями
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.css">
<link href='https://fonts.googleapis.com/css?family=Comfortaa&subset=cyrillic-ext' rel='stylesheet' type='text/css'>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://ваш_сайт/bxSlider/plugins/jquery.easing.1.3.js"></script>
<script src="http://ваш_сайт/bxSlider/jquery.bxslider.js"></script>
<script>jQuery(document).ready(function(){
jQuery('.bxslider').bxSlider({
pager: false,
captions: true,
nextText: '',
prevText: '',
useCSS: false,
easing: 'jswing',
speed: 500
});
});</script>
<ul class="bxslider">
<li><img src="http://ваш_сайт/flower-example-10.jpg" title="Аленький цветочек"/></li>
<li><img src="http://ваш_сайт/flower-example-9.jpg" title="Утренняя роса" /></li>
<li><img src="http://ваш_сайт/flower-example-3.jpg" title="Букет цветов" /></li>
<li><img src="http://ваш_сайт/flower-example-5.jpg" title="Ветка вишни" /></li>
</ul>
* {box-sizing: border-box;}
ul {
margin: 0;
padding: 0;
list-style: none;
}
.bx-wrapper {
width: 500px;
margin: 0 auto;
position: relative;
}
.bx-wrapper img {
width: 100%;
max-width: 100%;
display: block;
}
.bx-prev, .bx-next {
text-decoration: none;
position: absolute;
top: 50%;
margin-top: -15px;
border: 1px solid rgba(255,255,255,0.7);
color: rgba(255,255,255,0.7);
width: 30px;
height: 30px;
line-height: 30px;
font-size: 15px;
text-align: center;
border-radius: 50%;
transition: all ease .3s;
z-index: 10;
cursor: pointer;
}
.bx-prev:hover, .bx-next:hover, .bx-prev:active, .bx-next:active {
background: #6BA7BD;
border-color: #6BA7BD;
}
.bx-prev {left: 20px;}
.bx-next {right: 20px;}
.bx-prev:before, .bx-next:before {font-family: "FontAwesome";}
.bx-prev:before {content: "\f104";}
.bx-next:before {content: "\f105";}
.bx-caption {
position: absolute;
width: 50%;
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%);
transition: .3s ease-in-out;
padding: 2em;
background: rgba(255,255,255,.9);
z-index: 2;
text-align: center;
text-transform: uppercase;
font-family: 'Comfortaa', cursive;
}
3.3. Появляющиеся кнопки управления
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://ваш_сайт/bxSlider/plugins/jquery.easing.1.3.js"></script>
<script src="http://ваш_сайт/bxSlider/jquery.bxslider.js"></script>
<script>jQuery(document).ready(function(){
jQuery('.bxslider').bxSlider({
nextText:'',
prevText:'',
useCSS: false,
easing: 'jswing',
speed: 500
});
});</script>
<ul class="bxslider">
<li><img src="http://ваш_сайт/flower-example-10.jpg" /></li>
<li><img src="http://ваш_сайт/flower-example-9.jpg" /></li>
<li><img src="http://ваш_сайт/flower-example-3.jpg" /></li>
<li><img src="http://ваш_сайт/flower-example-5.jpg" /></li>
</ul>
* {box-sizing: border-box;}
ul {
margin: 0;
padding: 0;
list-style: none;
}
.bx-wrapper {
width: 500px;
margin: 0 auto;
position: relative;
}
.bx-wrapper img {
width: 100%;
max-width: 100%;
display: block;
}
.bx-pager {
position: absolute;
bottom: 20px;
width: 100%;
text-align: center;
}
.bx-pager-item {display: inline-block;}
.bx-pager-link {
text-indent: -9999px;
display: block;
width: 15px;
height: 15px;
margin: 0 5px;
outline: 0;
border: 2px solid white;
border-radius: 50%;
}
a.active {background: white;}
.bx-prev, .bx-next {
text-decoration: none;
position: absolute;
top: 50%;
margin-top: -25px;
background: white;
color: #666;
width: 50px;
height: 50px;
opacity: 0;
text-align: center;
transition: .4s linear;
z-index: 10;
cursor: pointer;
}
.bx-wrapper:hover .bx-prev, .bx-wrapper:hover .bx-next, .bx-wrapper:hover .bx-prev:active, .bx-wrapper:hover .bx-next:active {opacity: 1;}
.bx-prev {left: 20px;}
.bx-next {right: 20px;}
.bx-prev:before, .bx-next:before {
font-family: "FontAwesome";
font-size: 30px;
line-height: 50px;
}
.bx-prev:before {content: "\f104";}
.bx-next:before {content: "\f105";}
3.4. Галерея изображений с миниатюрами
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://ваш_сайт/bxSlider/jquery.bxslider.js"></script>
<script>jQuery(document).ready(function(){
jQuery('.bxslider').bxSlider({
nextText: '',
prevText: '',
pagerCustom: '#bx-pager'
});
});</script>
<div class="slider">
<ul class="bxslider">
<li><img src="http://ваш_сайт/flower-example-10.jpg"/></li>
<li><img src="http://ваш_сайт/flower-example-9.jpg"/></li>
<li><img src="http://ваш_сайт/flower-example-3.jpg"/></li>
<li><img src="http://ваш_сайт/flower-example-5.jpg"/></li>
</ul>
<div id="bx-pager">
<a data-slide-index="0" href=""><img src="http://ваш_сайт/flower-example-10.jpg" /></a>
<a data-slide-index="1" href=""><img src="http://ваш_сайт/flower-example-9.jpg" /></a>
<a data-slide-index="2" href=""><img src="http://ваш_сайт/flower-example-3.jpg" /></a>
<a data-slide-index="3" href=""><img src="http://ваш_сайт/flower-example-5.jpg" /></a>
</div>
</div>
* {box-sizing: border-box;}
ul {
list-style: none;
margin: 0;
padding: 0;
}
.bx-wrapper {
width: 500px;
margin: 0 auto;
position: relative;
}
.bx-wrapper img {
width: 100%;
max-width: 100%;
display: block;
}
#bx-pager {
margin-top: 20px;
text-align: center;
}
#bx-pager a {margin: 0 3px;}
#bx-pager a img {
padding: 3px;
border: 1px solid #ccc;
width: 80px;
transition: .4s ease-in-out;
}
#bx-pager a.active img {border: 1px solid #D4104E;}
.bx-prev, .bx-next {
text-decoration: none;
position: absolute;
top: 50%;
margin-top: -40px;
background: white;
color: #666;
width: 30px;
height: 80px;
text-align: center;
transition: .4s linear;
z-index: 10;
cursor: pointer;
}
.bx-prev {
left: 0;
border-radius: 0 5px 5px 0;
}
.bx-next {
right: 0;
border-radius: 5px 0 0 5px;
}
.bx-prev:before, .bx-next:before {
font-family: "FontAwesome";
font-size: 30px;
line-height: 80px;
}
.bx-next:before {content: "\f105";}
.bx-prev:before {content: "\f104";}