@@MudGuard
die Reihe der Bildchen wird einfach abgeschnitten.
Das ist auch gut so. Das nur teilweise sichtbare Bild suggeriert: hier kann man doch bestimmt horizontal scrollen.
Blöd, wenn Viewportbreite und Bildbreiten gerade so sind, dass eine ganzzahlige Anzahl von Bildern genau passt und nichts vom nächsten Bild zu sehen ist. Dann hat man bei nur während des Scrollens angezeigten Scrollbars keinen Hinweis, dass da noch mehr ist und man horizontal scrollen kann.
Hold my beer!
Man ändert also die angestrebte Bildgröße geringfügig so, dass das nächste Bild immer angeschnitten ist:
-
Ermittle, wie viele Bilder nebeneinander passen. Zur Verfügung stehende Breite[1] geteilt durch angestrebte Bildbreite plus Zwischenraum, auf ganze Zahl gerundet:
--visible-items: round(100cqw / (var(--suggested-size) + var(--gap)));Da man noch nicht in allen Browsern (hallo, Firefox) durch eine Länge teilen kann, steckt das in einem
@supports-Block, wo geprüft wird, ob da eine Ganzzahl rauskommt, die ein gültiger Wert für diecolumns-Eigenschaft ist:@supports (columns: round(1em/1em)) { -
Berechne die Bildgröße: zur Verfügung stehende Breite geteilt durch Anzahl der Bilder minus Zwischenraum:
--calculated-size: calc(100cqw / var(--visible-items) - var(--gap));Das passiert immer noch im
@supports-Block. -
Setze die Bildgröße auf den berechneten Wert. In Brosern, in denen man noch nicht durch eine Länge teilen kann, gibt es keinen berechneten Wert; nimm dann den angestrebten Wert:
width: auto; height: var(--calculated-size, var(--suggested-size));
Sieht dann so aus: ☞ image size calculation
🖖 Live long and prosper
In our chants of “ICE out now”
Our city’s heart and soul persists
Through broken glass and bloody tears
On the streets of Minneapolis
— Bruce Springsteen, Streets of Minneapolis
Ich hab das mit Container-Query-Einheit
cqwgemacht. In diesem speziellen Fall (wenn der Container über die gesamte Viewportbreite geht) ginge das auch mit Viewport-Einheitvw. ↩︎