Скроллер содержимого на jQuery
773

Скроллер содержимого на jQuery

11 октября 2008, 19:15JavaScriptрейтинг +19-

Сегодня будет учиться делать вот такой симпотичный скроллер содержимого. Для этого нам понадобиться замечательный фреймворк jQuery, плагин mousewheel.js и немного терпения.

Скроллер содержимого на jQuery

Этот клевый скрипт сделали ребята из Флоуплеера.

Возможности

  • горизонтальный и вертикальный скроллинг;
  • возможность установить количество видимых элементов;
  • возможность скролить мышкой (в том числе и колесиком мыши) и стрелками с клавиатуры (требуется плагин mousewheel.js);
  • создание навигационных клавиш без программирования;
  • встроенные действия: next, prev, nextPage, prevPage, seekTo, begin, end.

Поддержка браузерами

  • Firefox 1.5/2.0+;
  • Internet Explorer 5.5/6.0/7.0+;
  • Safari 2.0+;
  • Opera 9.0+.

Примеры

Понравилось? Теперь давайте посмотрим, как реализовать первый пример.

HTML

<div id="scrollable">	
<div class="navi">
<span class="active" page="0"></span><span page="1"></span><span page="2"></span> </div>
<a class="prev"></a>
<div class="items">
<a>1</a> <a>2</a> <a>3</a> <a>4</a> <a>5</a>
<a>6</a> <a>7</a> <a>8</a> <a>9</a> <a>10</a>
<a>11</a> <a>12</a> <a>13</a> <a>14</a> <a>15</a>
</div>
<a class="next"></a>
</div>

JavaScript

$("#scrollable").scrollable({items:'.items',horizontal:true});

CSS


#scrollable {
background-color:#efefef;
border:1px solid #ddd;
padding:10px 8px;
width:550px;
height:65px;
}

/* контейнер для элементов, которые мы будет скролить */
div.items {
height:66px;
margin-left:8px;
float:left;
width:478px !important;
}



/* стиль элемента */
div.items a {
display:block;
float:left;
margin-right:8px;
width:88px;
height:66px;
background:url(img/item.gif) 0 0 no-repeat;
font-size:50px;
color:#ccc;
line-height:66px;
text-decoration:none;
text-align:center;
cursor:pointer;
}

div.items a:hover {
color:#999;
}

div.items a.active {
background-position:-174px 0;
color:#555;
cursor:default;
}


/* кнопки вперед и назад */
a.prev, a.next {
display:block;
width:30px;
height:30px;
float:left;
background-repeat:no-repeat;
margin:15px 0 0 0;
}

a.prev {
background:url(img/button-left.gif);
}

a.prev:hover {
background:url(img/button-left-over.gif);
}

a.next {
background:url(img/button-right.gif);
}

a.next:hover {
background:url(img/button-right-over.gif);
}


/* верхняя навигация */
div.navi {
position:relative;
top:-30px;
left:310px;
margin-left:-50px;
width:50px;
height:0px;
}


/* элементы верхней навигации */
div.navi span {
width:8px;
height:8px;
float:left;
margin:3px;
background:url(img/dots.png) 0 0 no-repeat;
cursor:pointer;
}

div.navi span:hover {
background-position:0 -8px;
}

div.navi span.active {
background-position:0 -16px;
}

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

Полный синтаксис

Ниже идет список всех возможностей (и значений по умолчанию).

// выберите один или несколько элементов для скроллинга
$("JQUERY SELECTOR").scrollable({

// дефолтное количество видимых эелементов 5
size: 5,

// по умолчания ставиться вертикалльный скроллинг
horizontal:false,

// время одного прокручивани]
speed: 300,

/*
селектор для кнопки перемотки назад
*/
prev:'.prev',

// это для кпопки вперед
next:'.next',

/*
селектор для верхней навигации
*/
navi:'.navi',

// имя html элемента внутри верхней навигации (точки)
naviItem:'span',


// CSS класс для активного элемента верхней навигации
activeClass:'active',

/*
Элементы, который мы будет скролить, выбираются этим селектором
*/
items: '.items',

// функция, которая вызывается при скроллинге элементов
onSeek: null

});

Использование навигации

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

Рассмотрим такой пример. У нас есть 4 кнопки, кликая по которым вы будете прокручивать список элементов сразу на несколько штук. Количество таких элементов будет зависить от количества элементов внутри скрола.

<div class="navi">
<span page="0" class="active"></span>
<span page="1"></span>
<span page="2"></span>
<span page="3"></span>
</div>

Использование API

Рассмотрим функции скрипта, которые можно использовать для организации навигации внутри скрипта.

// выбираем элемент для скрола
var el = $("div.scrollable");

// шаг сперед
el.scrollable("next", [speed]);

// шаг назад
el.scrollable("prev", [speed]);

// страница вперед
el.scrollable("nextPage", [speed]);

// страница назад
el.scrollable("prevPage", [speed]);

// переход на конкретную страницу
el.scrollable("setPage", 1, [speed]);

// 2 шага вперед
el.scrollable("move", 2, [speed]);

// переход на конкретный элемент
el.scrollable("seekTo", 2, [speed]);

// переход к первому элементу
el.scrollable("begin", [speed]);

// и к последнему
el.scrollable("end", [speed]);

Я думаю, что вы уже поняли как много штук можно сделать с помощью этого скрипта.

Memori.rumister-wong.combobrdobr.rumoemesto.rudel.icio.uszakladki.yandex.rugoogle.com/bookmarks/

Понравилась статья?

Тогда подпишись на обновления через RSS или воспользуйся
другими способами подписки.

Читать в Яндекс.Ленте Добавить в Google Добавить в Netvibes
Подписка по электронной почте
 

RSS Комментарии

клевый плагин. спасибо за урок!
Artman, 12 октября 2008, 13:57
По ссылкам [скроллинг плейлистаk и [скроллинг с навигацией по табамk ошибка 404.
Octane, 12 октября 2008, 15:10
И почему-то в моем посте вместо кавычек ёлочек Alt+0171 и Alt+0187 появились символы [ и k.
Octane, 12 октября 2008, 15:13
Спасибо, Octane, исправил
Grin, 12 октября 2008, 15:23
При нажатии на картинку ( http://vremenno.net/js/jquery-scrolling-plugin/ ) - пустая страница открывается.
Владислав Мёдов, 12 октября 2008, 17:15
Это начинает мне нравится. Спасибо, прям мысли угадываете. :D
Вадим, 12 октября 2008, 18:06
Вы как сговорились сегодня? Все сегодня о нем пишут, весь рунет :)
PRestige, 12 октября 2008, 18:45
Вот интересно - я один на странице с плейлистом вертикального скроллера не вижу и должен догадаться что там больше трёх песен? А на скроллере с табами всё так ужасно дёргается... шо писец - если такое заказчику показать - пошлют далеко и надолго.
Steward, 12 октября 2008, 19:42
Спасибо, полезная статья. Измените "вот такой симпотичный скроллер"
Андрей, 12 октября 2008, 20:39
Всё бы ничего, но вот только использование подсказки в виде точек абсолютно не к месту. Основной смысл этих точек показывать сколько элементов есть в сете и на каком их них ты находишься. Т.е. смысл от них есть только тогда, когда единомоментно виден только один элемент сета. А что мы видим в первом примере? 15 элементов и всего 3 точки. Как я должен понять, в какой момент я вышел за первую треть сета, а как, что зашёл во вторую? В остальном красиво, но сильно лагает, особенно при вертикальной прокрутке. Вместе со скроллом мыши тащится и сама страница.
pepelsbey, 13 октября 2008, 1:41
Ага при прокрутке тормозит. Да ещё на рабочем компьютере Microsof Mouse с аналоговым скроллом, который за одно движение всю эту менюшку прокручивает :D да еще и браузер начинает в этот момент притормаживать. Я бы вообще убрал эти точки и реакцию на скроллер, а так как элемент интерфейса клёвая штука :) р.s. добро пожаловать в «dmoz» :-)
Octane, 13 октября 2008, 3:52
Спасибо, отличный скроллинг, как раз на днях искали, но воспользовались [дефолтнымk из jQuery UI. Вот только [спрайтk с навигационными точками в IE6 глючит ) вылезает вся картинка.
Денис Чистяков, 13 октября 2008, 8:38
pepelsbey, тут все просто. точки сверху это как страницы в блоге. Каждая точка листает на 5 (сколько видно за раз) элементов. Это как на блоге - перемотка, к примеру, на 10 постов
Grin, 13 октября 2008, 17:15
Скроллер не очень впечатлил, а вот за флоуплейер спасибо большое!
bukvoed, 14 октября 2008, 8:57
ОТличная вещь, как раз пригодится с табами)
sergy, 14 октября 2008, 10:11
> точки сверху это как страницы в блоге Страницы в блоге сгруппированы текущей страницей, поэтому вам понятно какой пост открывает сет/страницу, а какой закрывает. А тут длинная простынка и как я должен ориентироваться? Правильно только разделив количество элементов на количество точек. Вот только зачем вы заставляете меня думать? ;)
pepelsbey, 15 октября 2008, 1:28
pepelsbey, ну да, возможно эта фича не везде удобна )
Grin, 15 октября 2008, 11:05
Как по мне использование точек как раз уместно. Ведь если я захочу перейти скажем на страницу 74 зачем мне перелистывать все страницы?. Что не понравилось - большой размер кнопок и то что количество кнопок следовало б сделать кратным 10, тогда легче понимать на какую точку нужно нажать для перехода.
Zodios, 26 октября 2008, 18:22
В архиве с примером не хватает scrollable.js.
Ghz, 1 ноября 2008, 9:27
Привет! Спасибо за прекрасный блог :) Возник у меня один вопрос насчет скроллера. Если вынести кнопки прокручивания (prev и next) за div "scrollable", то они уже перестают действовать :( Можно исправить? Помогите, пожалуйста.
Shend, 4 ноября 2008, 14:16

Спонсоры

Wi-Fi точки в твоем городе
Profit-project.ru - заработай на своих сайтахРеклама на сайте

Блогорол