Chào các bạn, mình đang code 1 đoạn js hover zoom image và gặp 1 chút khó khăn như sau, mong các bạn giúp đỡ.
Cách hoạt động:
- Khi hover chuột vào ảnh thì sẽ hiện hiệu ứng loading ( là hình vòng tròn ). Lúc này mình sẽ thêm 1 class là
loadingvào thẻdiv. - Khi ảnh được tải xong HOÀN TOÀN thì hiệu ứng loading biến mất và hiển thị background là cái image vừa load được và xóa class
loadingkia đi.
Vấn đề mình gặp phải:
- Mình có sử dụng
Image()để bắt sự kiện ảnhonloadnhưng khi load ảnh xong và setbackgroundImagecho thẻdiv, hiệu ứng loading đã kết thúc mà ảnh vẫn đang tải để hiện ra. - Trong một số trường hợp, khi kết thú hiệu ứng loading,
backgroundImagechưa sẵn sàng để hiển thị thì sẽ xuất hiện 1 khoảng trắng ( các bạn có thể test bằng cách bật devtool hoặc bỏ cache và load lại là thấy )
Câu hỏi của mình:
- Trong trường hợp của mình có event nào để bắt khi ảnh được tải xong HOÀN TOÀN
vàbackgroundImageđã sẵn sàng để hiển thị không? - Hoặc có cách nào để tối ưu nhất có thể cho trường hợp của mình không?
- Mình thấy để time delay qua hàm
setTimeout()thì không được ổn.
Đây là code của mình: https://codepen.io/notrealdev/pen/MWKXGxX
Vấn đề thì ngắn nhưng có thể mình trình bày hơi dài dòng, mong được các bạn hiểu được vấn đề mình muốn trình bày.
Cám ơn mọi người đã đọc bài.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?