Здравствуйте! Я новичок.
Копаюсь с jquery tinyscrollbar и нашел такой баг:
если блок с содержимым меньше прокручиваемой области, то убирается полоса прокрутки, однако не убирается возможность прокрутить колесом мыши содержимое (содержимое при прокрутке уезжает вверх, оставляя под собой пустое место).
Пытался разобраться в коде этого плагина, и примерно понял, как исправить баг, но не знаю, как это записать:
Код:
|
$.tiny.scrollbar = {
options: {
axis: 'y', // vertical or horizontal scrollbar? ( x || y ).
wheel: 90, //how many pixels must the mouswheel scroll at a time.
scroll: true, //enable or disable the mousewheel;
size: 'auto', //set the size of the scrollbar to auto or a fixed number.
sizethumb: 'auto' //set the size of the thumb to auto or a fixed number.
}
}; |
Параметр scroll определяет возможность прокручивать область колесом. Я так понял, надо при инициализации и обновлении проверять, меньше ли область с содержимым области прокрутки и если да, изменять значение scroll.
Вот инициализация и обновление:
Код:
|
function initialize() {
oSelf.update();
setEvents();
return oSelf;
}
this.update = function(sScroll){
oViewport[options.axis] = oViewport.obj[0]['offset'+ sSize];
oContent[options.axis] = oContent.obj[0]['scroll'+ sSize];
oContent.ratio = oViewport[options.axis] / oContent[options.axis];
oScrollbar.obj.toggleClass('disable', oContent.ratio >= 1);
oTrack[options.axis] = options.size == 'auto' ? oViewport[options.axis] : options.size;
oThumb[options.axis] = Math.min(oTrack[options.axis], Math.max(0, ( options.sizethumb == 'auto' ? (oTrack[options.axis] * oContent.ratio) : options.sizethumb )));
oScrollbar.ratio = options.sizethumb == 'auto' ? (oContent[options.axis] / oTrack[options.axis]) : (oContent[options.axis] - oViewport[options.axis]) / (oTrack[options.axis] - oThumb[options.axis]);
iScroll = (sScroll == 'relative' && oContent.ratio <= 1) ? Math.min((oContent[options.axis] - oViewport[options.axis]), Math.max(0, iScroll)) : 0;
iScroll = (sScroll == 'bottom' && oContent.ratio <= 1) ? (oContent[options.axis] - oViewport[options.axis]) : isNaN(parseInt(sScroll)) ? iScroll : parseInt(sScroll);
setSize();
}; |
Подскажите пожалуйста, куда что записать (изначально в коде уже есть проверка того, какая область больше:
Код:
|
oViewport[options.axis] = oViewport.obj[0]['offset'+ sSize];
oContent[options.axis] = oContent.obj[0]['scroll'+ sSize];
oContent.ratio = oViewport[options.axis] / oContent[options.axis]; |
)
Спасибо!
Ссылка на плагин