slidr.js - слайдер на "чистом" javascript
Простой, легкий (21Кб в сжатом виде) слайдер, написанный на чистом Javascript, не имеющий никаких зависимостей, т.е. работает без jQuery.
Протестирован в следующих браузерах:
- Chrome 26.0
- Firefox 20.0
- Safari 5.1.7
- IE 10
- Opera 16.0
Есть неполная поддержа IE8/9 (нет эффектов).
GitHub | Демо
- Вы можете добавить на страницу неограниченное количество слайдеров, даже разместить один в другом.
- Изменяет размеры с зависимости от содержимого, но можно и запретить.
- Навигация с помощью клавиатуры - когда курсор находится на слайдере, можно переключать слайдеры с стрелками.
- Поддержка мобильных touch событий.
Перед закрывающимся тегом </body> необходимо подключить slidr.js или slidr.min.js файл.
1
<script type="text/javascript" src="/path/to/slidr.min.js"></script>
slidr.js может работать с любыми inline, inline-block, block элементами, имеющими аттрибут id. Допускается использовать любые дочерние элементы первого уровня с атрибутом data-slidr, например:
1234567891011121314151617
<ul id="slidr-ul" style="display: inline">
<li data-slidr="one">apple</li>
<li data-slidr="two">banana</li>
<li data-slidr="three">coconut</li>
</ul>
<div id="slidr-img" style="display: inline-block">
<img data-slidr="one" src="/static/images/apple.png"/>
<img data-slidr="two" src="/static/images/banana.png"/>
<img data-slidr="three" src="/static/images/coconut.png"/>
</div>
<div id="slidr-div" style="dislay: block">
<div data-slidr="one">apple</div>
<div data-slidr="two">banana</div>
<div data-slidr="three">coconut</div>
</div>
После подключения slidr.js станет доступен глобальный объект slidr. Самый простой способ создания slidr:
1
slidr.create('slidr-id').start();
Вызов с заданием всех настроек:
1234567891011121314
slidr.create('slidr-id', {
after: function(e) { console.log('in: ' + e.in.slidr); },
before: function(e) { console.log('out: ' + e.out.slidr); },
breadcrumbs: true,
controls: 'corner',
direction: 'vertical',
fade: false,
keyboard: true,
overflow: true,
theme: '#222',
timing: { 'cube': '0.5s ease-in' },
touch: true,
transition: 'cube'
}).start();
Все доступные настройки для slidr.js приведены в таблице ниже.
| Параметр | Тип | По умолч. | Description |
|---|
after | function | | callback-функция после смены слайда |
before | function | | callback-функция до смены слайда |
breadcrumbs | bool | false | Показать хлебные крошки для управления слайдами. true или false. |
controls | string | border | Расположение стрелок для управления слайдами. border, corner ornone. |
direction | string | horizontal | Направление по умолчанию для новых слайдов. horizontal или h,vertical или v. |
fade | bool | true | Включить эффект затемнения для смены слайдов (fade-in/out). true или false. |
keyboard | bool | false | Включить смену сладов с помощью клавиатуры. trueили false. |
overflow | bool | false | Включить overflow для блока со слайдером. true илиfalse. |
pause | bool | false | Не менять слайды автоматически при наведении мыши (необходимо запустить auto()). trueили false. |
theme | string | #fff | Цвет элементов управления слайдером (хлебных крошек и стрелок). #hexcode илиrgba(value). |
timing | object | {} | Custom animation timings to apply. {'transition': 'timing'}. |
touch | bool | false | Задействовать touch управление на мобильных устройствах. true илиfalse. |
transition | string | linear | Эффект смены слайдов. cube, linear, fade или none. |
Функции обратного вызова after и before получают следующие данные:
123456789101112131415
{
id: "slidr-id",
in: {
el: #<HTMLElement>,
slidr: "data-slidr-in",
trans: "transition-in",
dir: "direction-in"
},
out: {
el: #<HTMLElement>,
slidr: "data-slidr-out",
trans: "transition-out",
dir: "direction-out"
}
}
Глобальное пространство имен slidr предоставляет следующие функции:
12345678910111213141516171819
function version() {};
function transitions() {};
function create(id, opt_settings) {};
12345678910111213141516
var s = slidr.create('slidr-api-demo', {
breadcrumbs: true,
overflow: true
});
s.add('h', ['one', 'two', 'three', 'one']);
s.add('v', ['five', 'four', 'three', 'five'], 'cube');
s.start();
Короткая запись
123456
var s = slidr.create('slidr-api-demo', {
breadcrumbs: true,
overflow: true
}).add('h', ['one', 'two', 'three', 'one'])
.add('v', ['five', 'four', 'three', 'five'], 'cube')
.start();
Полный список функци API Slidr.js представлен ниже
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
function start(opt_start) {};
function canSlide(next) {};
function slide(next) {};
function add(direction, ids, opt_transition, opt_overwrite) {};
function auto(opt_msec, opt_direction, opt_start) {};
function stop() {};
function timing(transition, opt_timing) {};
function breadcrumbs() {};
function controls(opt_scheme) {};
В некоторых браузерах появляется этот неприятный баг. Чтобы исправить его нужно добавить стиль к body:
123
body {
overflow: hidden;
}
Slidr сам "понимает", нужно ли изменять размеры слайдера под изображение. Если у блока слайдера указаны размеры, то Slidr не будет автоматически их менять. Если указаны свойства min-width и min-height, то слайдер будет менять свой размер под контент, учитывая эти значения. В противном случае определение размеров будет проходить в автоматическом режиме.
Автоматическое изменение размеров
12345
<div id="slidr-inline-dynamic" style="display: inline">
<div data-slidr="one">good</div>
<div data-slidr="two">gorgeous</div>
<div data-slidr="three">unbelievable</div>
</div>
Статические размеры
12345
<div id="slidr-inline-static" style="display: inline; width: 155px; height: 30px">
<div data-slidr="one">good</div>
<div data-slidr="two">gorgeous</div>
<div data-slidr="three">unbelievable</div>
</div>
Разметка элементов управления следующая:
123456
<aside id="{slidr-id}-control">
<div class="slidr-control up"></div>
<div class="slidr-control down"></div>
<div class="slidr-control left"></div>
<div class="slidr-control right"></div>
</aside>
Вы можете кастомизировать любой элемент управления слайдером с помощью CSS селекторов:
1234567891011121314
aside[id="{slidr-id}-control"] .slidr-control.right {
width: 50px !important;
height: 50px !important;
top: 50% !important;
margin-top: -25px !important;
right: -25px !important;
border-radius: 25px;
background: url('/static/images/arrow_right.png') 14px 13px no-repeat black;
opacity: 0.4;
}
aside[id="{slidr-id}-control"] .slidr-control.right:hover {
opacity: 1;
}
Элемент управления "стрелка" реализован с помощью псевдоселектора :after, поэтому, чтобы его скрыть, используйте следующий код:
1234567891011121314
// Hide a single arrow within a single controller.
aside[id="{slidr-id}-control"] .slidr-control.right:after {
border-color: transparent !important;
}
// Hide all arrows within a single controller.
aside[id="{slidr-id}-control"] .slidr-control:after {
border-color: transparent !important;
}
// Hide all Slidr arrows.
aside[id*="-control"] .slidr-control:after {
border-color: transparent !important;
}
++++
slidr-breadcrumbs.pngХлебные крошки имеют простую HTML разметку. Каждый ul обозначает всю строку, а каждый li отдельную хлебную крошку:
12345678
<aside id="{slidr-id}-breadcrumbs">
<ul class="slidr-breadcrumbs">
<li></li>
<li class="normal"></li>
<li class="normal active"></li>
</ul>
...
</aside>
Стилизация хлебных крошек с помощью CSS:
12345678910111213141516171819
// Customize the position, size, border color and background color.
aside[id="{slidr-id}-breadcrumbs"] {
right: 50% !important;
margin-right: -41px !important;
}
aside[id="{slidr-id}-breadcrumbs"] .slidr-breadcrumbs li {
width: 15px !important;
height: 15px !important;
margin: 3px !important;
}
aside[id="{slidr-id}-breadcrumbs"] .slidr-breadcrumbs li.normal {
border-color: white !important;
}
aside[id="{slidr-id}-breadcrumbs"] .slidr-breadcrumbs li.active {
background-color: black !important;
}
Это программное обеспечение может свободно использовать под лицензией MIT.