Je cherche à reproduire la disposition div de Pinterest.com, en particulier la façon dont le nombre de colonnes s'ajuste pour s'adapter plus / moins au redimensionnement du navigateur et 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 message de Quora indiquant que cela était fait avec jQuery et CSS personnalisés. J'aimerais que les résultats soient triés de gauche à droite. Toute direction que vous pourriez fournir pour le faire moi-même serait grandement appréciée.
104
Réponses:
Vous pouvez également vérifier sur la maçonnerie jQuery Plug-in , pour ce type de fonctionnalité.
la source
J'ai écrit le script Pinterest. Les ID ne sont pas liés à la mise en page et sont utilisés pour d'autres JS liés à l'interaction. Voici comment cela fonctionne:
Préalablement:
Configurer une baie:
Boucle à travers chaque broche:
Le résultat est léger. Dans Chrome, la présentation d'une page complète de plus de 50 broches prend moins de 10 ms.
la source
Nous avons publié un plugin jQuery car nous avons eu la même question plusieurs fois pour Wookmark . Il crée exactement ce type de mise en page. Regardez-le ici - Plugin Wookmark jQuery
la source
Après avoir examiné toutes les options, j'ai fini par implémenter la mise en page similaire à Pinterest de cette manière:
Tous les DIV sont:
Cela les rend mieux positionnés en rangées 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 quand:
L'avantage de cette approche - votre HTML a du sens pour les moteurs de recherche, peut fonctionner avec JavaScript désactivé / bloqué par le 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)
la source
Ils divisent les entités par colonnes avec des identifiants (mauvaise solution ... mieux vaut utiliser les noms de classe) puis calculent les positions par groupes de colonnes
la source
display: inline-block
je suppose, mais les éléments de hauteur verticale différente ne s'asseoiraient pas ensemble.float:left;
et le dernier avecoverflow: hidden;
) et y stocker des élémentsPourquoi n'essaies-tu pas ça, des trucs simples de js
http://vanilla-masonry.desandro.com/index.html
Ou même cela avec jQuery et le chargement par défilement.
http://masonry.desandro.com/index.html
la source
Vous pouvez utiliser des flotteurs et dimensionner vos largeurs de div en utilisant des pourcentages avec min-width pour forcer les div à tomber automatiquement une fois que la largeur minimale est atteinte? C'est ainsi que nous l'avons fait fonctionner sur http://www.goldtree.co.za/work
la source