Я разрабатываю приложение HTML/JS для потребления именно на iPad. В приложении есть некоторые прокручиваемые элементы.Проблема с прокручиваемым div на ipad
Я установил ширину и высоту документа 1024 и 768 соответственно. Я поставил смотровое отверстие для
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
то я использую класс
.scrollable {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
для прокруткой дивы, чтобы сделать их прокрутки правильно. Наконец, я использую немного JavaScript, чтобы остановить overscroll на самом документе, позволяя прокручивать для дивы и списков:
$(document).on('touchmove',function(e){
e.preventDefault();
});
//uses body because jquery on events are called off of the element they are
//added to, so bubbling would not work if we used document instead.
$('body').on('touchstart','.scrollable',function(e) {
if (e.currentTarget.scrollTop === 0) {
e.currentTarget.scrollTop = 1;
} else if (e.currentTarget.scrollHeight === e.currentTarget.scrollTop + e.currentTarget.offsetHeight) {
e.currentTarget.scrollTop -= 1;
}
});
//prevents preventDefault from being called on document if it sees a scrollable div
$('body').on('touchmove','.scrollable',function(e) {
e.stopPropagation();
});
Все это работает - в основном. Однако есть одна загвоздка. Если прокручиваемый элемент не содержит достаточного количества содержимого, требующего прокрутки, попытка прокрутки запускает прокрутку по всему документу. Я прочитал сотни блогов и другие вопросы, но не могу найти решение. Любые идеи приветствуются.
Чтобы быстро исправить это, вы можете иметь высоту мин на классе. – Romain
Это не так просто, так как прокручиваемые классы находятся в разных местах с высотой, определяемой динамически во время выполнения. –