Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как запретить прокрутку нижележащего окна? / 17 сообщений из 17, страница 1 из 1
04.06.2014, 20:18
    #38661933
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Собственно, есть некий div fixed с прокруткой, нижележащее окно также с прокруткой.
Если прокручивать верхний див скроллером мыши, по достижении нижнего/верхнего предела начинает крутиться нижележащее окно.

http://jsfiddle.net/Fx6mm/2/

Попытка остановить прокрутку с помощью stopPropagation не помогла (или я неверно понимаю, как в данном случае она работает)

Поиском нашел только способ - отслеживать mouseenter/mouseleave на верхнем диве и ставить нижележащему диву overflow: hidden, но это как-то криво, есть ли способ логичнее и проще?
...
Рейтинг: 0 / 0
04.06.2014, 21:55
    #38661971
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Shocker.Pro,

Как мне кажется, нижнее окно не крутится (если не двигать вообще маус, после первого фокуса) если чуть двинуть маус, когда уже достигнут предел прокрутки, начинает двигаться второе окно (нижнее)


p.s Наверно нужно убирать скролл у нижнего окна, когда появляется fixed окно, или просто когда фокус на нём.
...
Рейтинг: 0 / 0
04.06.2014, 22:00
    #38661972
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Shocker.Pro,

Хотя нет.. Ошибся (померещилось)) оно двигается, только с каким-то непонятным запасом прокрутки колесика на мышке, 4-5 раз крутануть после достижения предела лимита fixed окна, и начинает двигаться нижнее окно..
...
Рейтинг: 0 / 0
04.06.2014, 22:56
    #38661991
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Shocker.Pro,

вот тут правильно написано (первый ответ) :)
ответ на вопрос

так что stopPropagation и preventDefault обычно помогают, когда надо что-то отключить. Но не в этом случае.
...
Рейтинг: 0 / 0
04.06.2014, 23:19
    #38662005
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Програмёрпервый ответЭто дизаблит нафиг весь скроллинг окна браузера, а мне надо, чтобы скроллинг работал в пределах того окна, надо которым курсор, не уходя глубже.
...
Рейтинг: 0 / 0
04.06.2014, 23:43
    #38662024
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Shocker.Pro,

Мне кажется, что иначе никак. проверяем окно в фокусе, проверяем можно ли скролить. Если нельзя - disable ))
...
Рейтинг: 0 / 0
05.06.2014, 00:52
    #38662065
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Попробовал в FF 29.0.1
Работает почти идеально.

В минусах: иногда продолжает двигаться фоновое окно даже если мышь на вложенном окне. Но после пары махов мышой из-в вложенного окна проблема исчезает, выглядит как будто FF не всегда сразу понимает что мышь находится в области встроенного окна.
...
Рейтинг: 0 / 0
05.06.2014, 01:02
    #38662068
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Привет, давно не виделись! ))

White OwlПопробовал в FF 29.0.1что именно пробовал-то?
...
Рейтинг: 0 / 0
05.06.2014, 01:30
    #38662080
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Shocker.Proчто именно пробовал-то?Твой пример из первого поста топика.
...
Рейтинг: 0 / 0
05.06.2014, 01:40
    #38662085
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Дык это пример о том, как не хотелось бы ))

Попробовал в FF - скроллинг начинается с задержкой. То есть - крутишь вниз, докручивается до конца диалог, потом крутишь - какое-то время ничего не происходит, потом начинает крутиться фон.

В ИЕ, Опере, Хроме фон начинает прокручиваться немедленно, как только заканчивается "запас хода" у диалога.
...
Рейтинг: 0 / 0
05.06.2014, 23:03
    #38663045
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Коллеги!

Покурив мануалы и примеры и внимательно проанализировав, что я хочу, докладываю!

Для начала определимся с понятиями, чтобы не путаться - есть прокрутка колеса мыши - wheel , есть прокрутка окна - scroll

Для удобства повторю ссылку на свой фиддл http://jsfiddle.net/Fx6mm/2/

По хорошему мне не требуется блокировать scroll на нижнем окне (и вообще любые действия на нем), юзер должен иметь возможность пользовать его элементы (отодвинув диалог в сторонку, открыв два диалога и т.п.), соответственно решение с overflow:hidden не подходит.
При этом, c эстетической точки зрения нужно заблокировать wheel, если этот wheel происходит, когда курсор мыши находится не над нижним окном (фиг с ним, я готов пожертвовать wheel на нижнем окне в принципе, пусть там останется только scroll, но при этом wheel должен работать на верхнем окне).


Что выяснено опытным путем:
Сначала возникает событие wheel на каждом вложенном элементе под курсором мыши. При этом "всплытие" и "погружение" события отлавливаются корректно.

Если отменить событие wheel с помощью preventDefault, scroll не произойдет нигде , вне зависимости на каком этапе всплытия применить preventDefault

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

Попытка вернуть scrollTop на предварительно запомненное место приводит к неэстетичным пляскам в некоторых браузерах.

Исходя из вышесказанного, я пока не вижу пути, как можно выполнить требуемую задачу.
про wheel: http://learn.javascript.ru/mousewheel
Возможно не вижу его только я. У кого-нить есть идеи?

ЗЫ: теоретически можно

поймать событие wheel

запомнить верхний элемент, с которого оно спустилось

запомнить свойство события deltaY

отменить wheel

вручную прокрутить элемент на нужное количество пикселей
пока не пробовал, но это уже жесть какая-то (((
...
Рейтинг: 0 / 0
16.06.2014, 11:18
    #38670117
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Коллеги, проблема актуальна! )
...
Рейтинг: 0 / 0
25.06.2014, 08:31
    #38679212
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
up!

Что, никто не хочет даже попробовать повозиться?
...
Рейтинг: 0 / 0
25.06.2014, 09:17
    #38679246
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Shocker.Pro,

Я пробовал, честно. Но за короткий период не решил проблему.

Вот тебе некоторые идеи, раз остальные молчат.

Проверяй события колеса и скролла. Оба ли они срабатывают когда скроллить уже некуда. Если что-то не срабатывает в конце то отключай через JS скролл. Попробуй окружить все одним большим дивом.

Я бы в таком направление начал исследовать.
...
Рейтинг: 0 / 0
25.06.2014, 10:26
    #38679353
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
GustlyОба ли они срабатывают когда скроллить уже некуда. Если что-то не срабатывает в конце то отключай через JSТак в том-то и проблема. Wheel срабатывает всегда и ДО скролла. В тот момент, когда я смогу определить, есть куда скроллить или нет, wheel уже сработал и отменить его нельзя.

GustlyПопробуй окружить все одним большим дивом.окружить весь контент сайта не получится - там сразу возникает много других проблем с абсолютным позиционированием хедера и футера
...
Рейтинг: 0 / 0
25.06.2014, 10:48
    #38679386
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
Shocker.Pro,

Под отменой я имел в виду, что крутить вверх, на столько на сколько прокрутилось вниз. Правда может быть эффект дергания. Например смотрим где курсор. Если не на боди то крутить боди вверх.
...
Рейтинг: 0 / 0
25.06.2014, 10:50
    #38679390
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить прокрутку нижележащего окна?
А, это я пробовал - неюзабельные дикие пляски в некоторых браузерах.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как запретить прокрутку нижележащего окна? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]