2012-12-27 23 views
8

Có cách nào để xác định vị trí cuộn tối đa cho mọi trình duyệt mà không thực sự cuộn đến cùng và đọc vị trí này không?Làm cách nào để xác định vị trí cuộn tối đa trong các trình duyệt khác nhau có chiều cao và/hoặc độ dốc dòng khác nhau?

Lấy div vùng chứa có chiều cao cố định và tràn. Một số phần tử div trong vùng chứa có tổng chiều cao lớn hơn chiều cao của vùng chứa.

Có một vị trí cuộn tối đa (y) mà tôi nghĩ đơn giản chỉ là chiều cao vùng chứa trừ tổng chiều cao mục. Điều này có vẻ đúng cho đến khi số line-height của vùng chứa lớn hơn height của các mục. Nếu đúng như vậy, có vẻ như mọi trình duyệt đều xác định vị trí cuộn tối đa khác nhau.

Với đệm thậm chí còn tồi tệ hơn, một số trình duyệt thêm phần đệm trên cùng, một số trình duyệt thêm cả phần đệm trên cùng và dưới cùng.

Xem ví dụ này fiddle chẳng hạn. Chơi xung quanh với chiều cao dòng container và chiều cao div.item.

Trả lời

6

tôi chỉ có khả năng để thử nghiệm trong một số ít các trình duyệt, nhưng tôi nghĩ rằng những gì bạn đang tìm kiếm là:

elm.scrollHeight - elm.clientHeight 

Thể hiện trong một cập nhật jsFiddle.

+0

Hãy coi chừng: 'elm.clientHeight' không thuộc bất kỳ thông số W3C nào. Xem [Tham chiếu MDN] (https://developer.mozilla.org/en-US/docs/Web/API/element.clientHeight?redirectlocale=en-US&redirectslug=DOM%2Felement.clientHeight). – Simone

+0

@simone Cảm ơn những người đứng đầu. – tiffon

+0

Tôi đã phát hiện Firefox là 28 hỗ trợ 'elm.scrollTopMax' trả về cùng số với' elm.scrollHeight - elm.clientHeight' mặc dù nó không được ghi lại trên MDN và không được hỗ trợ trong các trình duyệt khác. –

4

Hãy xem điều này How to find the HTML element Scrollable Height and width using JQuery ?, điều này cho thấy cách có chiều cao và chiều rộng có thể cuộn, và có một số bài đăng có liên quan về cuộn phần how to check if the scrollbars are currently visible?how to determine if the vertical and horizontal scrollbars reaches the edges?. và có nhiều câu hỏi thường gặp hơn và tôi hy vọng điều này sẽ giúp bạn!

Các vấn đề liên quan