2012-01-18 2 views
0

Я сделал страницу с гладкой вертикальной прокруткой, и мне было интересно, можете ли вы как-нибудь «заблокировать», чтобы пользователь не мог использовать свою мышь или тачпад для прокрутки на странице - когда они делают это, вся идея прекращается.Плавная вертикальная прокрутка - Блокировка пользовательской прокрутки

вы можете увидеть прокрутку на моей веб-странице. enter link description here

До сих пор я только что скрыл полосу прокрутки, чтобы они не могли этого сделать. Я думаю, вы можете сказать, что я прошу, можете ли вы «заблокировать» ручную прокрутку?

Спасибо.

ответ

0

Как вы это сделали, все в порядке. Я не думаю, что вы можете отменить событие прокрутки, как вы можете, с другим событием (нажатие кнопки, нажатие кнопок и т. Д.)

Настройка переполнения скрытой будет такой, как я бы это сделал, так как это полностью останавливается все прокрутки. Событие даже не происходит в фоновом режиме.

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

Просто добавьте это один из ваших включенных JS файлов ...

window.onmousewheel = document.onmousewheel = function(event){ 
    if (event.preventDefault) event.preventDefault(); 
    event.returnValue = false; 
} 

Вот пример ...

http://jsfiddle.net/johncmolyneux/aSw2g/

+0

Это просто раздражает, когда я внезапно прокручиваю по тачпаду вместо того, чтобы нажимать на ссылки. может быть приятным, если пользователь НАСТОЯТЕЛЬНО НАХОДИТСЯ на ссылке для прокрутки. –

+0

Хорошо. Я не испытываю этой проблемы, поскольку я нахожусь на рабочем столе, а не на ноутбуке. Прокрутка полностью отключена для рабочего стола - колесо прокрутки, клавиши курсора, страница вверх/вниз отключена. – Archer

+0

Или вы имеете в виду планшет? – Archer

0

они несколько решений, но нет ничего, что я нашел идеально. Простейшая является:

  • установить CSS свойство «переполнение», чтобы скрытые (если на вашем теле, вы должны установить высоту и ширину до 100% на теле и HTML, а также без полей/отступов границ).

  • также вы можете добавить слушателя для прокрутки событий, а затем предотвратить их с event.prevendDefault().

Но они всегда нежелательные эффекты, которые могут без mousescroll «прокручивать» страницы (и блоки):

  • Первый выбор: ваш макет перерыв здесь. Чтобы попробовать, выберите из верхней и вниз, затем страница будет прокручиваться (с хромом). это вряд ли произойдет, когда нет текста и нет перетаскивания и капель, но как только это произойдет, ваши пользователи потеряны, поскольку нет полос прокрутки.
  • второй - scrollIntoView(). Вы можете вызвать это через javascript, или браузер будет делать это автоматически иногда (href к привязке, фокусу ввода, «прокрутка памяти при перезагрузке»). Это был самый большой риск, но контроль над ними очень ограничен.

наконец, один «плохой» решение, которое я нашел, чтобы регулярно заставлять scrollTop свойство элементов в 0. Но, скорее всего, вы не должны получить там и CSS body { overflow: hidden; height: 100% } будет достаточно.

Смежные вопросы