Je cherche à reproduire la disposition de Pinterest.com, en particulier la manière dont le nombre de colonnes s’adapte mieux/moins au redimensionnement du navigateur et que l’empilement vertical ne dépend pas de la hauteur des colonnes adjacentes. Le code source montre que chaque div est une position absolue. Un co-fondateur a répondu à un article de Quora en indiquant que cela était fait avec jQuery personnalisé et CSS. Je voudrais que les résultats soient triés de gauche à droite. Toute directive que vous pourriez donner pour le faire moi-même serait grandement appréciée.
Vous pouvez également vérifier sur le plug-in jQuery Maçonnerie , pour ce type de fonctionnalité.
J'ai écrit le script Pinterest. Les identifiants ne sont pas liés à la mise en page et sont utilisés pour d'autres JS liés aux interactions. Voici la base de la façon dont cela fonctionne:
Préalablement:
Mettre en place un tableau:
Boucle à travers chaque épingle:
Le résultat est léger. Sous Chrome, la mise en page complète de plus de 50 broches prend moins de 10 ms.
Nous avons publié un plugin jQuery car nous avons eu la même question plusieurs fois pour Wookmark . Cela crée exactement ce type de mise en page. Voir ici - plugin Wookmark jQuery
Après avoir examiné toutes les options, j'ai finalement implémenté la mise en page de la manière suivante:
Toutes les DIV sont:
div.tile {
display: inline-block;
vertical-align: top;
}
Cela les rend mieux placés dans les lignes que lorsqu’ils sont flottants.
Ensuite, lorsque la page est chargée, j'itère toutes les DIV en JavaScript pour supprimer les espaces entre elles. Cela fonctionne bien lorsque:
L'avantage de cette approche - votre code HTML a du sens pour les moteurs de recherche, peut fonctionner avec JavaScript désactivé/bloqué par un pare-feu, la séquence d'éléments en HTML correspond à la séquence logique (les éléments les plus récents avant les plus anciens).
Ils divisent les entités par colonnes avec des identifiants (mauvaise solution ... il vaut mieux utiliser les noms de classe), puis calculent les positions par groupes de colonnes.
Pourquoi n'essayez-vous pas cela, des choses simples en js
http://Vanilla-masonry.desandro.com/index.html
Ou même cela avec jQuery et le chargement de défilement.
Vous pouvez utiliser des flotteurs et dimensionner vos largeurs de div en utilisant des pourcentages associés à min-width pour forcer les div à tomber automatiquement une fois que la largeur minimale est atteinte. C'est la façon dont nous avons eu le travail sur http://www.goldtree.co.za/work