Skip to content
This repository has been archived by the owner on Nov 27, 2018. It is now read-only.

Активация горизонтального скролла #7

Closed
airtwister opened this issue Jul 10, 2014 · 6 comments
Closed
Labels

Comments

@airtwister
Copy link

Здравствуйте!
Использую Ваш скролл. Все отлично, за исключением горизонтального скроллбара.
Прочел статью http://habrahabr.ru/post/177399, в которой из комментов узнал, и после, закомментировал следующее условие:
if(!scrollx.isVisible || (d == 'x' && isVerticalScroll(event))){
return true;
}
Работает только при наведении мыши на 'трэк' скроллбара.

Также пробовал задать опцию { 'scrollx':html_element }, теперь скроллится при наведении на весь блок-врапер, но нет самого скроллбара.
Возможно ли активировать прокрутку на весь блок-врапер без скрывания скроллбара?
ПС: Я понимаю, что весь функционал максимально приближен к нативному, но именно в этом аспекте хотелось бы меньшей нативности:)

@gromo
Copy link
Owner

gromo commented Jul 10, 2014

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

Лушим решением будет "ручная" обработка колёсика мыши для прокрутки содержимого вне плагина. Т.к. скроллбар навешивается на событие "scroll", то проблем с этим не должно быть. Вторым решением будет создание собственного элемента скроллбара и использовании опции scrollx - туда подаётся jQuery массив с обеими элементами - и сам контейнер, и DOM элемент скроллбара; при этом придётся закомментировать строку с проверкой направления скролла (что не есть гут, т.к. плагин обновляется и Вам придётся переносить изменения из старой версии в новую вручную).

@airtwister
Copy link
Author

Спасибо.
Я применял второе решение, контент скроллится горизонтально, но пропадает сам скроллбар, в чем может быть причина?

@gromo
Copy link
Owner

gromo commented Jul 10, 2014

Причина в том, что если указать scrollx/scrolly, то скроллбар не создаётся, а пытается использовать тот элемент, который был указан. Таким образом, к примеру, можно укзать в качестве скроллбара элемент, находящийся вне блока (внешний скроллбар).

Если есть желание использовать второй способ (чего я не рекомендую), то нужно создать вручную элемент скроллбара, и для scrollx указать этот элемент + сам контейнер (jQuery позволяет это сделать с помощью команды add). В результате события отлавливания скролла мыши будут обрабатываться как на скроллбаре, так и на контейнере.

Вместо этого рекомендую написать отдельный обработчик, который бы отлавливал скролл мыши и изменял горизонтальную прокрутку контейнера.

@airtwister
Copy link
Author

Последую Вашему последнему совету.
Благодарю за объяснение

@gromo
Copy link
Owner

gromo commented Jul 10, 2014

Пример отдельного обработчика тут: http://jsfiddle.net/AZ6CZ/

@airtwister
Copy link
Author

спасибо!

@gromo gromo added the question label Jul 23, 2014
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants