Bilder
Sehen wir uns nun Oskars Bild an. Es hat noch keine Klasse und passt trotzdem schön in die Karte. Das ist wieder Preflight. Es gibt allen Bildern diese Stile:
img {
display: block;
max-width: 100%;
height: auto;
}display: block: Das Bild ist ein Block und steht in einer eigenen Zeile. Ohne das zeigt ein Browser ein Bild inline an, wie ein Wort in einem Satz, und lässt darunter eine kleine Lücke.max-width: 100%: Das Bild ist nie breiter als sein Elternelement. Unser Bild ist 600 Pixel breit, schrumpft aber auf die Breite der Karte.height: auto: Die Höhe folgt der Breite, das Bild behält also sein Seitenverhältnis (seine Form: wie oft es breiter als hoch ist) und wird nicht verzerrt.
Karten auf einer Website haben aber meist Bilder derselben Höhe, egal welche Form die Fotos haben. Wenn du Breite und Höhe eines Bildes festlegst, hat seine Box eine andere Form als das Bild selbst, und die CSS-Eigenschaft object-fit bestimmt, wie das Bild sie füllt:
| Klasse | CSS | Was sie bewirkt |
|---|---|---|
object-fill | object-fit: fill; | Streckt oder staucht das Bild auf die Größe der Box. Das ist der Standard. |
object-cover | object-fit: cover; | Füllt die ganze Box und behält das Seitenverhältnis. Was übersteht, wird abgeschnitten, wie bei einem Foto als Handy-Hintergrund. |
object-contain | object-fit: contain; | Das ganze Bild passt in die Box und behält das Seitenverhältnis; der Rest der Box bleibt leer. |
Hier ist Oskars Bild in einer Box, die doppelt so breit wie hoch ist (die gestrichelte Linie):
object-fillobject-coverobject-containMeistens willst du object-cover: Die Box ist gefüllt, und die Katze sieht nicht gequetscht aus. Probieren wir es Schritt für Schritt.
So schreibst du es:
Anweisungen
- 1
Füge Oskars Bild die Klasse
h-48hinzu (height: 12rem, 192 Pixel). Es hat noch kein Attributclass, schreibe alsoclass="h-48"in das Tagimg. Das Bild wird niedriger, aber auch schmaler: Der Browser behält sein Seitenverhältnis, also gehört zu einer kleineren Höhe eine kleinere Breite. - 2
Füge die Klasse
w-fullhinzu (width: 100%). Das Bild füllt wieder die Breite der Karte, ist jetzt aber gequetscht: Wenn Breite und Höhe festgelegt sind, streckt das Standardverhaltenobject-filles auf die Größe seiner Box. - 3
Füge die Klasse
object-coverhinzu. Das Bild hat wieder sein eigenes Seitenverhältnis und füllt die ganze Box: Der Browser schneidet oben und unten einen Streifen ab.