Мною было написано уже две статьи по поводу скроллинга внутри блока. И обе они были лишь материалом для создания чего-то конкретного. Чего-то, реализованного уже в этой статье.
Код html должен быть минимальным, и в то же время работоспособным в любых ситуациях. Следовательно, он остался тем же: теория скроллинга. В дальнейшем он будет изменяться javascript’ом.
Все что было описано выше, все это я воплотил в jQuery плагине.
Плагин jQuery.BlockScript используется для создания красивого скроллинга внутри блока.
Чтобы начать использовать его для своих целей, нужно иметь структуру, похожую на:
Подключаем скрипты:
После выполнения скрипта, получаем на выходе:
И настраиваем стили для себя:
#navigation{width:300px;overflow:auto;}
#pages{width:100%;white-space:nowrap}
.trackDrag{
height:1px;margin-top:4px;
position:relative;background:#ccc;
}
.arrowDrag{
height:9px;width:45px;margin-top:-4px;
background:#333;position:absolute;
}
.all-cont{}
.trackDrag — полоса прокрутки.
.arrowDrag — ползунок.
.all-cont — весь контент, который прокручивается.
Вот и все. Скроллинг в вашем блоке готов. Однако для удобства и более обширного использования этого плагина, я сделал еще 5 дополнений. Вынес три функции:
- startDragF: Когда начали тянуть ползунок
- stopDragF: Когда перестали тянуть ползунок
- initDragF: Во время перемещения ползунка
Последняя получает значения из скрипта: initDragF(x,m,l,r,k). Что они означают, можно узнать из предыдущей статьи теория скроллинга — javascript.
Еще два дополнения, которые так же полезны.
Параметр DOM (function(){…}) позволит вам сделать какие-то манипуляции с html кодом при загрузке плагина.
Параметр SEL (selector) означает селектор, который станет ровно в центре показываемой области при загрузке страницы.
Пример использования сразу всех параметров:
$(function(){
$('#navigation').BlockScroll({
sel: '.thisp', // Объект привязки для скроллинга при загрузке
DOM: function(){
// Манипуляии с DOM
},
startDragF: function(){
// Перед началом перемещения
},
stopDragF: function(){
// После окончания перемещения
},
initDragF: function(){
// Во время перемещения
},
});
});
Все, скроллинг готов. Осталось на него посмотреть:
Работоспособность скрипта проверялась:
FireFox 2.6.3 «>»
Opera 10.10 linux
Konqueror 4.4.4
Chromium 5.0.375.70
Очень надеюсь на ваши дополнения.
Ответить | Цитировать
А так еще не хватает mousewhell и скролинга при клике на пустую область скроллбара.
Ну и под IE8 не двигается к сожалению)
Ответить | Цитировать
Полоса скроллбара слишком мала, но если прицелиться и кликнуть по ней, перемещение сработает.
Mousewheel — довольно хорошая вещь. Надо будет подумать. Хотя, я бы не использовал эту технологию, так как есть ползунок.
Думаю и меньше версии не работают?
if(jQuery.browser.msie){
$(window)
.bind('selectstart',ignore)
.bind('dragstart',ignore);
}
Ответить | Цитировать
Ответить | Цитировать
Ответить | Цитировать
Ответить | Цитировать
forababy, если вам еще нужен вертикальный скроллинг, напишите мне.