Меню Закрыть

Как запретить скролл jquery

разрешить прокрутку страницы (обратное действие):

Мне без js никак , т.к. мне например фон нужно в лево подвинуть а в html overflow обрезает её к херам и остаётся белый фон

Круть! Респект автору

proger :
Не проще ли overflow:hidden на body повесить?

Не проще! Т.к. во первых overflow:hidden может не работать в некоторых браузерах, и во вторых этот код запрещает еще и прокурутку стрелками(!!) вверх вниз

Есть div с фиксированным позиционированием и overflow: auto . В блоке прокручивается текст колесом мыши. После того, как весь текст в блоке прокручен, начинает скролиться страница. Как запретить прокрутку body , пока курсор находится в div-е ?

Используя jQuery, я бы хотел отключить прокрутку тела:

Моя идея состоит в том, чтобы:

  1. Установить body
  2. Захват текущего scrollTop();/scrollLeft()
  3. Привязать к событию прокрутки тела, установите scrollTop / scrollLeft в захваченное значение.

Есть ли способ лучше?

Пожалуйста, посмотрите мой пример и причину, по которой, на http://jsbin.com/ikuma4/2/edit

Я знаю, что кто-то подумает: «Почему он не просто использует position: fixed на панели?».

Пожалуйста, не предлагайте это, поскольку у меня есть другие причины.

22 ответа

Единственный способ, который я нашел для этого, похож на то, что вы описали:

  1. Возьмите текущую позицию прокрутки (не забудьте горизонтальную ось!).
  2. Установите переполнение скрытым (вероятно, хотите сохранить предыдущее значение переполнения).
  3. Прокрутите документ до сохраненной позиции прокрутки с помощью scrollTo ().

Затем, когда вы будете готовы снова прокрутить, отмените все это.

Изменить: нет причин, я не могу дать вам код, так как я попытался выкопать его .

Это полностью отключит прокрутку:

Протестировал его на Firefox и Chrome.

Вы можете использовать этот код:

Я просто привожу небольшую настройку решения от tfe . В частности, я добавил некоторые дополнительные элементы управления, чтобы гарантировать отсутствие смещения содержимого страницы (или сдвига страницы ), когда полоса прокрутки установлена в hidden .

Читайте также:  Для чего используются raid массивы

Две функции JavaScript JavaScript lockScroll() и unlockScroll() могут быть определены соответственно для блокировки и разблокировки прокрутки страницы.

где я предположил, что у нет начального поля.

Обратите внимание, что, хотя вышеупомянутое решение работает в большинстве практических случаев, оно не является окончательным, поскольку оно требует некоторой дополнительной настройки для страниц, которые включают, например, заголовок с position:fixed . Давайте перейдем к этому особому случаю с примером. Предположим, чтобы иметь

Затем в функции lockScroll() и unlockScroll() необходимо добавить следующее:

Наконец, позаботьтесь о возможном начальном значении полей или отступов.

Чтобы отключить прокрутку, попробуйте это:

Я написал плагин jQuery для обработки этого: $ .disablescroll .

Он предотвращает прокрутку от событий колесика мыши, касания и нажатия клавиш, таких как Page Down .

Здесь есть демо .

Вы можете прикрепить функцию для прокрутки событий и предотвращения ее поведения по умолчанию.

Один вкладыш для отключения прокрутки, включая среднюю кнопку мыши.

edit : в любом случае нет необходимости в jQuery, ниже, как и в vanilla JS (это означает, что нет фреймворков, просто JavaScript):

this.body.scrollTop — IE совместимость

Разве вы не можете просто установить рост на 100% и скрыть переполнение? Смотрите http://jsbin.com/ikuma4/13/edit

Это может или не может работать для ваших целей, но вы можете расширить jScrollPane для запуска других функций, прежде чем он выполняет прокрутку. Я только что проверил это немного, но я могу подтвердить, что вы можете подключиться и полностью предотвратить прокрутку. Все, что я сделал, было:

  • Загрузите демонстрационный zip-архив: http://github.com/vitch/jScrollPane/archives/master
  • Откройте демо "События" (events.html)
  • Отредактируйте его, чтобы использовать неминифицированный источник скрипта:
  • В jquery.jscrollpane.js вставьте «возврат»; в строке 666 (благоприятный номер строки! но если ваша версия немного отличается, это первая строка функции positionDragY(destY, animate)
Читайте также:  Как проверить айпад на подлинность по серийному

Запустите events.html, и вы увидите нормально прокручивающийся блок, который из-за вашего вмешательства в кодирование не будет прокручиваться.

Таким способом вы можете управлять полосами прокрутки всего браузера (см. Fullpage_scroll.html).

Итак, предположительно, следующим шагом является добавление вызова к какой-либо другой функции, которая отключается и выполняет магию привязки, а затем решает, продолжать ли прокрутку или нет. У вас также есть вызовы API для установки scrollTop и scrollLeft.

Если вам нужна дополнительная помощь, напишите, где вы находитесь до!

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.