Остановить Firefox для сброса положения горизонтальной прокрутки, когда переполнение «скрыто»? - PullRequest
4 голосов
/ 30 августа 2011

У меня есть горизонтальная прокрутка div с разделами внутри. Я использую плагин Ariel Flesler scrollTo для прокрутки от одного раздела к другому.

Пожалуйста, смотрите: http://jsfiddle.net/carienf/qZeEe/

Скрипка отлично работает в IE 9, Safari 5.1, Opera 11.5 и Chrome 14 (все последние версии). Я могу щелкнуть ссылку, чтобы перейти к соответствующему разделу и прокрутить или прокрутить его в нем.

Проблема: В Firefox 7 (и более ранних версиях), когда я прокручивал до Раздела 2 или Раздела 3, а затем прокручивал вниз с помощью полосы прокрутки , , моя позиция сбрасывалась на первый раздел . Это также происходит, когда я изменяю размер окна браузера. Если я прокручиваю с помощью колесика мыши, Firefox ведет себя (другими словами, я остаюсь в текущем разделе).

Мой вопрос является точным повторением этого вопроса: Проблема смешивания overflow-x, FireFox и Javascript

Только принятый ответ (позволяющий видеть горизонтальную полосу прокрутки) не работает для моего конкретного случая. Также парень, который разместил вопрос, удалил свой пример. Мне действительно нужна эта полоса прокрутки, чтобы оставаться скрытой, и мне действительно не нравится идея скрывать ее за div.

Есть ли способ (кроме установки переполнения на «авто»), чтобы остановить Firefox от сброса положения прокрутки? Или каким-то другим способом скрыть полосу прокрутки?

ОБНОВЛЕНИЕ : Обновлен Firefox до 8.0 (все еще бета-версия), а затем поведение соответствует другим браузерам.

Ответы [ 2 ]

0 голосов
/ 25 августа 2012

Я просто столкнулся с той же самой проблемой. Когда моё «модальное окно» всплывает, я устанавливаю html.noscroll { overflow: hidden }, что, к сожалению, приводит к прокрутке окна вверх.

Вот единственное решение, которое я мог бы сделать:

function RemoveScrollbar(html) {
    var scrollTop = html.scrollTop;
    html.addClass('noscroll');
    html.scrollTop = scrollTop;
}

Это код MooTools, но его очень просто конвертировать в jQuery или другие фреймворки.

0 голосов
/ 04 октября 2011

Я вижу пару вариантов.

  1. отсекает полосу прокрутки.Принимает некоторые измерения, и вы должны позиционировать абсолютно.
  2. Добавьте 2-й div снаружи, который выполняет вертикальную прокрутку.Это нарушает ваш код в его текущем состоянии, но решает проблему с прокруткой.jsfiddle.net/s2YFM
...