Прокрутка JQuery Mobile Panel отдельно от контента
Я работаю над мобильным приложением HTML 5 с помощью JQuery Mobile. Дизайн требует меню боковой панели, которое может прокручиваться независимо от основного содержимого, поэтому, например, вы можете прокрутить где-нибудь на странице, открыть меню и прокрутить в этом меню без прокрутки содержимого страницы.
Для реализации меню очевидным выбором были слайд-панели JQuery Mobile. Однако я не смог заставить их прокручиваться отдельно от контента.
Я пытался использовать iScroll 4 с и без плагина iScrollView для прокрутки слайд-панели JQuery Mobile, но прокрутка не работает на панели, только для элементов в содержимом страницы. Содержимое панели можно сдвинуть и вытянуть, но оно вернется в исходное положение (эффект "резиновой ленты").
Я также пытался использовать jScroll для нацеливания на div, созданный мобильным JQuery (".ui-panel-inner"), но у него были те же результаты.
призвание refresh()
на объекте iScroll после показа панели тоже не получилось.
Я собираюсь забыть об использовании встроенных слайд-панелей JQuery Mobile для этой цели. Кто-нибудь знает решение для прокрутки панели JQuery Mobile независимо от элемента содержимого?
5 ответов
Это сводило меня с ума также. Я использовал решение на этом форуме ответ
Добавьте этот CSS после таблицы стилей JQueryMobile:
.ui-panel.ui-panel-open {
position:fixed;
}
.ui-panel-inner {
position: absolute;
top: 1px;
left: 0;
right: 0;
bottom: 0px;
overflow: scroll;
-webkit-overflow-scrolling: touch;
}
.ui-panel.ui-panel-open {
position:fixed;
}
.ui-panel-inner {
position: absolute;
top: 1px;
left: 0;
right: 0;
bottom: 0px;
overflow: scroll;
-webkit-overflow-scrolling: touch;
}
Это решение, предоставленное Элисон Тинкер. Чтобы запретить показ свитка, когда прокручивать нечего, измените его;
overflow: scroll;
в
overflow: auto;
У меня с тобой похожий случай. Мне нужно статичное меню на левой боковой панели. Я не хочу панель, прокрутка.
Затем я использую data-position-fixed="true"
,
Я думаю, что вы должны исправить содержимое, когда панель открыта
чтобы проверить, открыта ли панель, у вас есть этот класс, добавленный в BODY .ui-panel.ui-panel-open
Вы должны установить положение: фиксировано! Важно; к.ui-panel-wrapper под.ui-panel.ui-panel-open
Пожалуйста, обратитесь к моему решению, используя динамические настройки CSS, запущенные с помощью panelbeforeopen / panelbeforeclose, используя приведенную выше таблицу стилей для внутренней панели.
$(document).on("panelbeforeopen", "#panel", function () {
$(".ui-panel").css({
"overflow": "hidden"
});
$(".ui-content").css({
"overflow": "hidden",
"position": "fixed"
});
}).on("panelbeforeclose", "#panel", function () {
$(".ui-panel").css({
"overflow": "hidden"
});
$(".ui-content").css({
"overflow": "scroll",
"position": "absolute"
});
});
Прикрепленное обновление нижнего колонтитула: