Khó khăn với việc cuộn là bạn có thể không chỉ cần cuộn trang để hiển thị một div mà còn có thể cần cuộn bên trong các div có thể cuộn ở bất kỳ cấp độ nào.
Thuộc tính scrollTop có sẵn trên bất kỳ phần tử DOM nào, bao gồm cả nội dung tài liệu. Bằng cách đặt nó, bạn có thể kiểm soát mức độ cuộn xuống của nội dung nào đó. Bạn cũng có thể sử dụng các thuộc tính clientHeight và scrollHeight để xem mức độ cuộn cần thiết (có thể cuộn khi clientHeight (khung nhìn) nhỏ hơn scrollHeight (chiều cao của nội dung).
Bạn cũng có thể sử dụng thuộc tính offsetTop để tìm ra vị trí của phần tử trong vùng chứa.
Để xây dựng quy trình "cuộn vào chế độ xem" thực sự có mục đích chung từ đầu, bạn cần bắt đầu ở nút bạn muốn hiển thị, đảm bảo rằng nút đó nằm trong phần hiển thị của nút gốc, sau đó lặp lại tương tự cho nút gốc, v.v. con đường cho đến khi bạn đạt đến đỉnh.
Một bước của bước này sẽ trông giống như thế này (mã chưa được kiểm tra, không kiểm tra các trường hợp cạnh):
function scrollIntoView(node) {
var parent = node.parent;
var parentCHeight = parent.clientHeight;
var parentSHeight = parent.scrollHeight;
if (parentSHeight > parentCHeight) {
var nodeHeight = node.clientHeight;
var nodeOffset = node.offsetTop;
var scrollOffset = nodeOffset + (nodeHeight / 2) - (parentCHeight / 2);
parent.scrollTop = scrollOffset;
}
if (parent.parent) {
scrollIntoView(parent);
}
}