IOS-webkit-overflow-прокрутка прокрутки по неправильной оси или вообще не
Я создаю мобильное приложение для IOS с html5. Я использую "- webkit-overflow-scrolling: touch", чтобы получить собственную прокрутку инерции, но она очень глючит. Я решил проблемы с контентом, не отображаемым до тех пор, пока прокрутка не остановится, но одна постоянная ошибка:
когда я пытаюсь прокрутить вверх и вниз, ничего не происходит, но когда я пытаюсь прокрутить горизонтально, содержимое прокручивается вертикально (90 градусов). Если я перемещаюсь вокруг своего приложения и возвращаюсь к страницы, иногда это будет исправлено. Кроме того, иногда он вообще не прокручивается, несмотря на то, что он полон контента.
из того, что я погуглил, консенсус, похоже, заключается в том, что Apple знает об этой ошибке и не намерена исправлять ее в ближайшее время. Кто-нибудь нашел решение для правильной работы-webkit-overflow-scrolling?
3 ответов
Я также боролся с этой ошибкой в течение нескольких месяцев. Лучшая характеристика, которую я нашел:
https://bugs.webkit.org/show_bug.cgi?id=87391
который говорит, что это происходит, когда страница имеет iFrame и содержимое задано из Javascript. Мой текущий обходной путь в графический кодекс версии 1.6 использовать iScroll4 для явной прокрутки страницы, а не с помощью сенсорной прокрутки. Поскольку Javascript является однопоточным, это может быть медленно, если вы также выполняете анимацию или фоновую загрузку контента.
я столкнулся с той же проблемой: узел, используя -webkit-overflow-scrolling: scroll
это будет периодически прокручиваться вверх/вниз только с жестом прокрутки влево / вправо.
вот что я нашел возможными причинами:
- iframe присутствует на странице в любом месте, видимом или ином (источник)
-
visibility: hidden
применяется к любому родителю прокручиваемого узла (источник)
однако ни одна из этих ситуаций не присутствовала в моей веб-приложение. У меня была прокручиваемая <ul>
внутри чистого модального диалога CSS, который я написал, который использовал умный трюк, чтобы добавить прозрачную подложку - an ::after
псевдо-элемент с position: fixed
.
когда я убрал position: fixed
от псевдо-элемента проблема ушла! Конечно, это делало мой хитрый трюк бесполезным, но было интересно узнать, что эта ошибка может быть вызвана этой ситуацией.
устройство: iOS 5.1.1 на 2012 iPad 3 (сетчатка)
код нарушителя:
/* Underlay */
.dialog::after {
z-index: -1;
position: fixed; /* <--- This was the problem! */
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0,0,0,0.4);
content: "";
}
tl; dr: если содержащие элементы имеют фиксированное положение псевдо-элемента, удаление его может исправить вашу проблему прокрутки.
Я знаю, что проблема довольно старая, но мне пришлось заставить мой сайт работать на iOS 5. К сожалению, я не мог удалить или заменить iframe. Я заметил, что наличие iframe вызвало проблему только в том случае, если она была отображена до элемента, который должен был прокручиваться плавно. Добавление iframe в документ позже (после элемента с-webkit-overflow-scrolling: touch) Исправлена проблема :)