Ich möchte das div-Layout von Pinterest.com replizieren, insbesondere, wie sich die Anzahl der Spalten an die Größe des Browsers anpasst und die vertikale Stapelung nicht von den benachbarten Spaltenhöhen abhängt. Der Quellcode zeigt, dass jedes Div eine absolute Position ist. Ein Mitbegründer hat auf einen Quora-Beitrag geantwortet, der besagt, dass dies mit benutzerdefiniertem jQuery und CSS erfolgt. Ich möchte, dass die Ergebnisse von links nach rechts sortiert werden. Jede Richtung, die Sie geben könnten, um es selbst zu machen, wäre sehr dankbar.
104
Antworten:
Sie können auch das jQuery Plug-in Masonry auf diese Art von Funktionalität überprüfen .
quelle
Ich habe das Pinterest-Skript geschrieben. Die IDs haben nichts mit dem Layout zu tun und werden für andere interaktionsbezogene JS verwendet. Hier ist die Basis, wie es funktioniert:
Vorweg:
Richten Sie ein Array ein:
Schleife durch jeden Stift:
Das Ergebnis ist leicht. In Chrome dauert das Auslegen einer vollständigen Seite mit mehr als 50 Pins <10 ms.
quelle
Wir haben ein jQuery-Plugin veröffentlicht, weil wir für Wookmark mehrmals dieselbe Frage haben . Es erstellt genau diese Art von Layout. Hier ansehen - Wookmark jQuery Plugin
quelle
Nachdem ich mir alle Optionen angesehen hatte, implementierte ich das Layout ähnlich wie bei Pinterest folgendermaßen:
Alle DIVs sind:
Dadurch positionieren sie sich besser in Reihen als beim Schweben.
Wenn die Seite geladen wird, iteriere ich alle DIVs in JavaScript, um Lücken zwischen ihnen zu entfernen. Es funktioniert akzeptabel gut, wenn:
Der Vorteil dieses Ansatzes: Ihr HTML ist für Suchmaschinen sinnvoll, kann mit JavaScript arbeiten, das von der Firewall deaktiviert / blockiert wird. Die Reihenfolge der Elemente in HTML entspricht der logischen Reihenfolge (die neueren Elemente vor den älteren).
quelle
Sie teilen Entitäten nach Spalten mit IDs auf (schlechte Lösung ... verwenden Sie besser Klassennamen) und berechnen dann Positionen nach Spaltengruppen
quelle
display: inline-block
nehme ich an, aber Gegenstände mit unterschiedlicher vertikaler Höhe würden nicht zusammenpassen.float:left;
overflow: hidden;
Warum versuchst du das nicht?
http://vanilla-masonry.desandro.com/index.html
Oder auch dies mit jQuery und dem Laden von Scrolls.
http://masonry.desandro.com/index.html
quelle
Sie könnten Floats verwenden und Ihre Div-Breiten mithilfe von Prozentsätzen zusammen mit der Min-Breite dimensionieren, um zu erzwingen, dass Divs automatisch fallen, sobald die Mindestbreite erreicht ist. So haben wir es auf http://www.goldtree.co.za/work zum Laufen gebracht
quelle