Asked Oct 11th, 2019 10:05 a.m. 326 0 2
  • 326 0 2
+2

Hỏi về JavaScript "Cuộn đến đâu load đến đó"

Share
  • 326 0 2

Hình 1

//vang: là khối màu vàng
const vang = document.querySelector('.vang');
const vitrivang = vang.offsetTop;
if((window.pageYOffset+850) >= vitrivang){
           vang.classList.add('hienlen');
}
.hienlen{
    animation: hienlen 1s forwards;
}
@keyframes hienlen{
    from{opacity: 0} to{opacity: 1}
}

Cho mình hỏi thăm là: mình canh khoảng cách từ thanh cuộn đến đối tượng màu vàng thì sẽ được thông số như hình 1 (460px). Nhưng thực tế khi code thì phải +850px lận. Lẽ ra theo logic thì hai số phải trùng nhau chứ, nghĩa là chỉ cần +460px.

Tại sao có sự sai số như vậy ạ? Thông não giúp em.

Oct 11th, 2019 10:09 a.m.

Mình đọc câu hỏi nhưng chưa hiểu bạn đang hỏi gì. 😢

0
| Reply
Share
Avatar Dũng @quocdungabc
Oct 11th, 2019 10:10 a.m.

@huukimit : ah nghĩa là mình dùng 2 thứ:

  1. object.offsetTop
  2. window.PageYOffset

Sau đó so sánh hai thằng để thực hiện addclass cho object đó. object ở đây là KHỐI MÀU VÀNG.

0
| Reply
Share

2 ANSWERS


Answered Oct 18th, 2019 11:20 a.m.
Accepted
0

window.pageYOffset là chiều dài đã cuộn tính đến top của viewport, nếu b muốn "cuộn đến đâu load đến đó" thì cần xác định bottom của viewport( + chiều dài viewport = 850px)

image (1).png

Share
Answered Oct 12th, 2019 2:42 a.m.
+1

Mình ko biết nhiều về frontend lắm nhưng có lẽ vấn đề ở đây nằm ở method offsetTop. Bạn thử xem offsetParent của nó có xem có là static position ko? Thường thì nó là body. Mà cho dù là body cũng có sự chênh lệch với scrollbar.

Share
Avatar Dũng @quocdungabc
Oct 12th, 2019 3:02 p.m.

Cảm ơn pác nha, để mình ngồi coi lại chỗ đó xem thế nào.

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.