Trong khi điều này là không thể ra khỏi hộp, có thể nói, bạn có thể làm điều đó bằng iscroll
Vì vậy, bạn muốn sử dụng iScroll dành cho iOS và Android điện thoại di động thiết bị/viên, và sử dụng theo cách bạn hiện đang thực hiện nó cho các thiết bị máy tính để bàn.
iScroll có một loạt các tùy chọn cho chức năng gọi lại được gọi trên các sự kiện nhất định - chẳng hạn như 'onScrollMove', 'onBeforeScrollEnd', 'onTouchEnd', v.v. Thật không may, không có tùy chọn thực hiện gọi lại trên "EVERY position thay đổi, bao gồm những thay đổi gây ra bởi động lượng di chuyển sau khi người dùng đã dừng chạm vào màn hình ". Nhưng, thật dễ dàng để thêm một.
Trong nguồn iScroll, xung quanh dòng 127, gần "// Sự kiện" bình luận, thêm một biến mới:
onPosChange: null
Sau đó, xung quanh dòng 308, ở phần cuối của "_pos" chức năng, thêm dòng này:
if (this.options.onPosChange) this.options.onPosChange.call();
(sẽ chỉ gọi hàm được chuyển trong tùy chọn "onPosChange" nếu có).
Sau khi làm điều đó, các mã ví dụ sau đây sẽ thiết lập iScroll cho div với id = "iscroll_container", và sẽ in Y-offset để giao diện điều khiển mỗi lần nó thay đổi:
var myScroll;
function loaded() {
myScroll = new iScroll('iscroll_container', { onPosChange: actOnScroll });
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
//Use this for high compatibility (iDevice + Android)
document.addEventListener('DOMContentLoaded', function() { setTimeout(loaded, 200); }, false);
function actOnScroll(){
console.log('got a scroll move! Vert offset is: ' + myScroll.y);
}
Note, Ben the Bodyguard Parallax Site hoạt động trên iPad bằng cách sử dụng iScroll (chúng sử dụng phiên bản cũ hơn của iscroll và không thực hiện chính xác cách tôi mô tả ở đây)
Ngoài ra, Life of Pi Parallax Site hoạt động trên iPad thực sự độc đáo - Tôi không thể hiểu cách chúng làm điều đó, nhưng ít nhất nó chứng minh điều đó là có thể!
@tkalve giống nhau trên droid ... –
Tôi đã thử t anh ấy tại http://www.hakoniemi.net/labs/onscroll.html và kết thúc với cùng độ phân giải: không thể theo dõi cuộn đàn hồi của iOS. Không có trình xử lý sự kiện cho nó + cả khoảng thời gian chờ/khoảng thời gian không thực hiện trong khi cuộn. Và vì không có requestAnimationFrame trong iOS5, điều này dường như không thể giải quyết được. – zvona
Chắc chắn bạn không mong đợi rAF chạy nếu khoảng thời gian không chạy được. Đó là, tuy nhiên, FWIW, có thể để có được một lần đọc được cập nhật trong các công cụ Safari Dev ổ cắm web chạy trong khi di chuyển đà đang được tiến hành. –