Vì vậy, đây là những gì tôi đang cố gắng làm. Tôi có một mạng lưới với rất nhiều hình ảnh, vì vậy tôi đang sử dụng thư viện imagesLoaded cùng với khối xây.Sự kiện xây dựng: Sự kiện gọi sau khi hình ảnhĐược tải và bố cụcComplete
Dưới đây là CSS của tôi:
.grid {
opacity:0;
}
Và HTML:
<div class="grid">
<div class="grid-sizer"></div>
<div class="gutter-sizer"></div>
<div class="item">image</div>
<div class="item">image</div>
<div class="item">image</div>
</div>
Và đây là JS của tôi:
var $container = $('.grid');
// initialize Masonry after all images have loaded
$container.imagesLoaded(function() {
$container.masonry({
columnWidth: '.grid-sizer',
itemSelector: '.item',
gutter: '.gutter-sizer'
});
$container.masonry('on', 'layoutComplete', function(){
console.log('got here');
$container.animate({'opacity':1});
});
});
Mục tiêu của tôi là phải có lưới ẩn cho đến khi tất cả các hình ảnh được tải và cách bố trí hoàn tất, sau đó làm mờ nó. Vì một số lý do trong mã của tôi ở trên, nó không bao giờ đi vào layoutCom khối plete.
Nếu tôi di chuyển khối đó bên ngoài hình ảnhĐược tải, $ container.masonry không xác định điểm đó.
Bất kỳ ý tưởng nào?
Nếu bạn thay đổi opacity lưới tới 1 bạn có thể nhìn thấy mọi thứ đều bị sa thải ra tốt đẹp. Chỉ cần cố gắng tìm hiểu cách để bố cụcComplete để gọi để đặt độ mờ thành 1.
Điều này dường như làm việc trong fiddle, nhưng có vẻ như kỳ lạ đối với tôi. Có vẻ như nó có thể có khả năng cho 'console.log' để kích hoạt sau khi các hình ảnh được tải nhưng trước khi xây dựng xong việc xây dựng. Tôi sẽ phải thử nghiệm với nhiều hình ảnh lớn hơn. – Corey
Tôi muốn giới thiệu một số hình ảnh lớn hơn trong thử nghiệm của bạn vì tôi nghi ngờ rằng kích thước hình ảnh sẽ ảnh hưởng đến nề vì chúng đã được tải – jumojer
Sau một số nghiên cứu, tôi đã không tìm thấy bất kỳ bằng chứng nào về cuộc gọi masonry() . Vì vậy, điều đó có nghĩa là hàm sẽ thực hiện cho đến khi bố cục được thực hiện. Vì vậy, mỗi lần, hoạt ảnh sẽ thực thi sau khi bố cục được thực hiện với mã tôi đã cung cấp. – jumojer