Ich arbeite an einem Image-Gallery-Widget, wo der Benutzer eine Thumbnail-Breite, Thumbnail-Höhe und Rand (zwischen Thumbnails) einstellen kann und das Widget alle Thumbnails anzeigen wird ein schönes Gitter, bei dem jedes Bild die gleiche Breite und Höhe hat.Responsive Bildergalerie mit CSS flexbox oder grid-layout
Ich frage mich, ob css-flexbox oder css-grid das möglich macht, ohne Zeilen und Spalten im Code zu definieren und ohne Breakpoints/Media-Abfragen.
Thumbnail-Bilder werden in einem Anker gewickelt, so dass eine Galerie Artikel (oder Raster-Element) wird wie folgt aussehen:
<a href="#" class="gallery-item">
<img src="myimage" width="300" height="200" />
</a>
Die Galerie Artikel des div-Container vollständig füllen sollten, was bedeutet, Es sollte keine Lücke zwischen dem letzten Thumbnail in einer Zeile und der rechten Kante des Container-Divs sein (außer wenn wir nicht genug Items haben, um die Zeile zu füllen, dh wenn 3 Items ft hintereinander stehen, aber wir nur 8 Items haben, dann die dritte Reihe hat nur 2 Gegenstände und eine Lücke nach rechts, die so breit wie ein Gegenstand ist).
Galerieelemente können nie breiter sein als die vom Benutzer eingestellte Miniaturbreite, da die Qualität der Miniaturbilder nicht beeinträchtigt werden soll. Angenommen, in diesem Beispiel wird eine Breite von 300 Pixeln angenommen. Der Abstand zwischen den Galerieelementen ist festgelegt und wird vom Benutzer festgelegt. Wenn es nicht genügend Elemente eine Zeile füllen links, links einfach ausrichten heißt etwa so:
Ich will keine Haltepunkte in CSS definieren noch eine html für Zeile/Spalte Konstrukte hinzufügen. Ich möchte, dass der Browser einfach so viele Galerieelemente nebeneinander platziert, wie sie in den Container passen. Wenn auf der rechten Seite eine Lücke ist (zB 3 Thumbnails * 300px Breite = 900px, aber Container ist 1000px breit), sollte der Browser die Grid-Items verkleinern, so dass ein weiterer Gallerie-Item hineinpasst und somit die Lücke beseitigt. Ich muss in der Lage sein, einen Rand um jeden Galerieartikel herum zu definieren.
Sie das gewünschte Ansprechverhalten sehen in diesem gif (wenn der Browser Breite zu ändern):
Was Sie in der gif sehen, ohne Flexbox getan wird, muss aber eine Tonne CSS, die ich war Ich hoffe, mit Flexbox zu vermeiden. Ich habe Flexbox schon etwas recherchiert, konnte mich aber noch nicht ganz damit abfinden.
Danke für irgendwelche Tipps!
Ist js hier erlaubt? – blackmiaool
Nein, ich suche eine CSS-Lösung. –
Bitte geben Sie den Code ein, den Sie ausprobiert haben. –