Управление клавиатурой для tinyscrollbar.JS
Я хочу добавить управление клавиатурой для скрипта tiny scrollbar. я не очень хорошо разбираюсь в javascript. я знаю, что могу использовать функцию jQuery keypress () для перехвата клавиш со стрелками(38,40), а затем прокручивать обзор div, изменяя его свойство CSS top.
Я могу сделать это за пределами плагина tinyscrollbar, но я хотел бы использовать функции, которые уже находятся внутри плагина, чтобы сделать это.
Любое направление о том, как начать это будет большим подспорьем.спасибо.
Подробнее информация, проверьте tinyscrollbar код здесь . И больше информации и демо здесь.
2 ответа:
Я добавил новую функцию в плагин и использовал ее для обновления scroll on keydown event.
Код, добавленный в плагин:
// define the added function jQuery.fn.tinyscrollbar_updatescroll = function(sScroll) { return jQuery( this ).data( 'tsb' ).updatescroll( sScroll ); }; // end of added function definition function Scrollbar( root, options ) { var oSelf = this , oWrapper = root , oViewport = { obj: jQuery( '.viewport', root ) } , oContent = { obj: jQuery( '.overview', root ) } , oScrollbar = { obj: jQuery( '.scrollbar', root ) } , oTrack = { obj: jQuery( '.track', oScrollbar.obj ) } , oThumb = { obj: jQuery( '.thumb', oScrollbar.obj ) } , sAxis = options.axis === 'x' , sDirection = sAxis ? 'left' : 'top' , sSize = sAxis ? 'Width' : 'Height' , iScroll = 0 , iPosition = { start: 0, now: 0 } , iMouse = {} , touchEvents = 'ontouchstart' in document.documentElement ; function initialize() { oSelf.update(); setEvents(); return oSelf; } // the new added function using the wheel function this.updatescroll = function( sScroll ) { if( oContent.ratio < 1 ) { iScroll -= sScroll; iScroll = Math.min( ( oContent[ options.axis ] - oViewport[ options.axis ] ), Math.max( 0, iScroll )); oThumb.obj.css( sDirection, iScroll / oScrollbar.ratio ); oContent.obj.css( sDirection, -iScroll ); } }; // end of added function
Код вне плагина:
jQuery('body').keydown(function (event) { if (event.keyCode == 38) { // up arrow $('#scrollbar1').tinyscrollbar_updatescroll(40); } else if (event.keyCode == 40) { // down arrow $('#scrollbar1').tinyscrollbar_updatescroll(-40); } });
Tinyscrollbar_updatescroll прокручивает содержимое до текущей позиции плюс количество отправленных данных. исходная функция tinyscrollbar_update прокручивает содержимое до определенной позиции, заданной в пикселях.
Вам придется расширить этот плагин, чтобы поддерживать события keydown & keyup, и добавить функциональность для прокрутки в соответствии с этими нажатиями клавиш. Текущая функциональность прокрутки в плагине напрямую связана с перетаскиванием с помощью мыши или колесика мыши изменений.
В качестве альтернативы вы можете использовать что-то еще, что имеет встроенные события клавиатуры. Например, https://github.com/adaburrows/jquery.ui.scrollbar