2014-06-30 2 views
0

Je fais de la maintenance sur un site PHP qui utilise le filtrage Isotope, et j'apprends encore Javascript. Pour cette raison, je n'arrive pas à résoudre un problème avec Isotope.Filtrage isotopique - espacement anormal au chargement seulement

J'ai une page avec 40 tuiles dans deux sections séparées. Une des sections fonctionne correctement sans erreurs. Mais dans la deuxième section, quand je charge la page, elle affiche les 10-12 dernières cases les unes sur les autres (elle varie, apparemment de manière aléatoire). Cependant, chaque fois que je clique sur l'un des filtres, cela fonctionne bien et les pousse à l'espacement approprié. Ainsi, le problème concerne uniquement le comportement lors du chargement initial de la page.

Est-ce que quelqu'un sait ce qui pourrait causer ce genre de problème?

+0

Très difficile à dire sans voir le code mais je suppose que vous n'êtes pas en attente pour les images à charger avant d'utiliser Iosotope. Cela signifie que l'isotope peut calibrer la mauvaise hauteur pour vos éléments. Voir ici http://isotope.metafizzy.co/appendix.html – Turnip

+0

Merci pour la réponse, je suppose que plus que tout j'avais besoin d'aide pour savoir où commencer à chercher. Cela m'apporte beaucoup plus près que j'étais. C'est vraiment mal calculer la distance entre les images, à ce que je peux dire. Je mettrai à jour cette fois une fois que j'ai testé la réparation de votre lien suggéré. – bluemoon6790

+0

semble que vos images n'ont pas été chargées, car ils calculent votre position exactement, sans l'image chargée signifie qu'il n'a pas de largeur et de hauteur, ce qui est la raison pour laquelle il est l'un de l'autre, vous pouvez vérifier sont chargés ou quand doc.ready – vico

Répondre

2

Essayez de remplacer document.ready par window.load, ce qui vous fera attendre le téléchargement des images avant de lancer l'isotope.

$(document).ready(function() { 
    // executes when HTML-Document is loaded and DOM is ready 
    $.isotope(); 
}); 

$(window).load(function() { 
    // executes when complete page is fully loaded, including all frames, objects and images 
$.isotope(); 
}); 

En fait, en lisant le lien 3rror404 affiché, vous pouvez faire

// layout Isotope again after all images have loaded 
$container.imagesLoaded(function() { 
    $container.isotope('layout'); 
}); 
+0

Cela m'a pointé dans la bonne direction. C'est fondamentalement ce dont j'ai besoin, je ne suis pas sûr exactement comment l'implémenter, mais je suppose que je finirai par le comprendre. – bluemoon6790

Questions connexes