Chcę odtworzyć układ div Pinterest.com, a konkretnie sposób, w jaki liczba kolumn dostosowuje się, aby dopasować mniej / więcej do zmiany rozmiaru przeglądarki, a układanie w pionie nie zależy od wysokości sąsiednich kolumn. Kod źródłowy pokazuje, że każdy element div jest pozycją bezwzględną. Współzałożyciel odpowiedział na post Quora, w którym stwierdził, że jest to zrobione z niestandardowym jQuery i CSS. Chciałbym, aby wyniki były posortowane od lewej do prawej. Wszelkie wskazówki, które mógłbyś podać, aby to zrobić sam, byłyby bardzo mile widziane.
104
Odpowiedzi:
Możesz również sprawdzić jQuery Plug-in Masonry , pod kątem tego rodzaju funkcjonalności.
źródło
Napisałem skrypt na Pinterest. Identyfikatory nie są powiązane z układem i są używane dla innych JS związanych z interakcjami. Oto podstawa tego, jak to działa:
Uprzednio:
Skonfiguruj macierz:
Zapętlaj przez każdy pin:
Rezultat jest lekki. W przeglądarce Chrome ułożenie całej strony zawierającej ponad 50 pinów zajmuje mniej niż 10 ms.
źródło
Wypuściliśmy wtyczkę jQuery, ponieważ otrzymaliśmy to samo pytanie kilka razy dla Wookmark . Tworzy dokładnie taki układ. Zobacz to tutaj - wtyczka Wookmark jQuery
źródło
Po przejrzeniu wszystkich opcji ostatecznie zaimplementowałem układ podobny do Pinteresta w następujący sposób:
Wszystkie DIV to:
To sprawia, że układają się w rzędach lepiej niż gdy są pływające.
Następnie po załadowaniu strony iteruję wszystkie DIV w JavaScript, aby usunąć przerwy między nimi. Działa zadowalająco dobrze, gdy:
Zaleta tego podejścia - Twój HTML ma sens dla wyszukiwarek, może działać z JavaScript wyłączonym / zablokowanym przez zaporę ogniową, sekwencja elementów w HTML jest zgodna z sekwencją logiczną (nowsze elementy przed starszymi)
źródło
Dzielą jednostki według kolumn z identyfikatorami (złe rozwiązanie ... lepiej używaj nazw klas), a następnie obliczają pozycje według grup kolumn
źródło
display: inline-block
Przypuszczam, że można by użyć , ale przedmioty o różnej wysokości w pionie nie będą siedzieć razem.float:left;
i ostatni zoverflow: hidden;
) i przechowywać tam elementyDlaczego nie spróbujesz tego, prostych rzeczy w js
http://vanilla-masonry.desandro.com/index.html
Lub nawet to z jQuery i ładowaniem przewijania.
http://masonry.desandro.com/index.html
źródło
Możesz użyć elementów zmiennoprzecinkowych i zmienić szerokość elementów div, używając wartości procentowych razem z min-szerokością, aby wymusić automatyczne opadanie elementów div po osiągnięciu minimalnej szerokości? Tak to działa w witrynie http://www.goldtree.co.za/work
źródło