jquery maçonnerie brise (empile des images) en chrome / safari mais seulement en première charge
Il semble que, lorsque j'essaie de charger la page, toutes les images sont empilés sur le dessus de l'un à l'autre. Mais si vous cliquez sur un lien qui vous emmène à la même page (comme le lien vers l'accueil), puis la maçonnerie des coups de pied dans. Donc, je pense que la maçonnerie est en cours de chargement trop tôt, comme avant jquery prépare la page ou quelque chose.
Ici mon jquery appel:
$(document).ready(function(){
$('#image_roll_container').masonry({
itemSelector: '.box'
});
....
Voici la page en question:
il fonctionne très bien sous firefox et IE8.
source d'informationauteur rugbert | 2011-09-19
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à résoudre ce problème avec la suite de tweak:
dirait que j'ai besoin d'un plugin appelé imagesLoaded pour la Monsry script fonctionne correctement avec les goûts de google chrome et safari
Essayé tout ce qui est suggéré dans ce fil de discussion, rien n'a fonctionné, puis trouvé ceci:
Fonctionne très bien maintenant, trouvé ici:
https://github.com/desandro/masonry/issues/35
Post Original de l'auteur:
https://github.com/desandro
Vous avez raison à propos de la imagesLoaded. Il a été fonctionne correctement dans Firefox, mais empilement dans Chrome/Safari.
Voici le lien http://masonry.desandro.com/demos/images.html
Code:
Je suis récemment tombé sur cette question. Pour le fixer, j'ai eu recours à l'img attributs width et height. Le problème s'est résolu de lui-même.
Une autre façon, si vous savez l'image des hauteurs, est à définir dans le CSS avant de vous charger de la Maçonnerie, puis la mise en page est plus rapide que d'attendre pour les images. Cette méthode fonctionne si, par exemple, toutes vos images sont de la même taille. Ensuite, votre site se charge rapidement sur les connexions lentes, comme le téléphone mobile.
J'ai posté un peu de script pour la méthode alternative ici:
http://instancia.net/loading-jquery-masonry-on-mobile/
Si vous utilisez ce script, modifier les numéros pour correspondre à la vôtre.
Sur Firefox et sur mon iPad 2 en maçonnerie fonctionnait bien, mais dans chrome et safari sur OS X, les éléments qui se chevauchent/empilage au chargement de la page et jusqu'à ce qu'une fenêtre de redimensionnement de même se produire. Après avoir creusé dans le code de jquery.masonry.js j'ai trouvé que je peux déclencher un resize() juste après la création de la maçonnerie, de sorte que tous les éléments de réorganiser correctement. Maintenant tout fonctionne bien.
toutes les autres solutions: (fenêtre).de charge, réglage de la largeur & hauteur en CSS et sur img attributs, etc, ça n'a pas fonctionné pour moi.
Il a besoin de hauteurs dans ces navigateurs pour afficher correctement comme Jennifer dit. I utilisation de php getimagesize() pour obtenir la hauteur et la largeur des images. Fonctionne parfaitement maintenant.
La "charge" de l'événement se déclenche pour chaque image dans le DOM, c'est exagéré. Vous avez besoin de mettre à jour la mise en page de la maçonnerie lors de la dernière image dans le DOM. Voici le code:
J'ai eu le problème inverse, comme décrit: la première charge a bien fonctionné dans Mac OS X Safari, mais le changement de la grille avec tous les nouveaux éléments causé tous pour pile dans le coin supérieur gauche. En outre, en attente pour le prêt de l'événement et de réglage CSS hauteur & largeur sur nos éléments n'ont pas le fixer.
Sur notre site, nous avons les catégories de données qui s'affichent dans la maçonnerie de la grille, et une seule catégorie montre à la fois. Un utilisateur pourrait passer de la catégorie, à tout moment, et de déclencher une requête AJAX pour charger les nouvelles données. Dans le dernier Safari (9.1, 10) et les navigateurs comme google Chrome, nous pourrions simplement le faire lors de la modification de la catégorie de swap dans tous les nouveaux éléments:
Cependant, dans certaines versions de Safari qui ne fonctionne pas, et nous avons dû faire ceci à la place:
Parce que je n'ai pas le temps pour traquer chaque version de navigateur qui pourraient être affectés par ce bug, je suis passé à la dernière méthode pour tous les navigateurs.