CSS img – positionieren, zentrieren, beschneiden

CSS img center – Bilder horizontal und vertikal zentrieren

Bilder mit einem img-Tag werden nicht wirklich in eine Webseite eingefügt – aus technischer Sicht bleiben Bilder an ihrem Speicherort und nur der Pfad zum Bild sitzt i.d.R. als src im HTML-img-Tag. Alternativ bindet CSS Bilder als background-image ein.

23-02-02 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

Bilder an den Rand, Bilder nebeneinander

Bilder sind inline-Elemente, d.h. sie erzeugen keinen Zeilenumbruch. Bilder werden i.d.R. in HTML-Tags wie div oder figure gesetzt, um sie gezielt auf der Webseite zu positionieren.

Bilder rechts oder links an den Rand des umfassenden Elements oder nebeneinander zu setzen gehört zu den Routinearbeiten in jedem Content Management System: Dafür bekommen Bilder CSS float: left oder float: right. float kann ein Element allerdings nicht zentrieren.

Bilder mit flexbox horizontal und vertikal zentrieren

Heute tendiert das Webdesign eher zu zentrierten mittig gesetzten Bildern, statt sie rechts oder links vom Text umfließen zu lassen. display: flex zentriert Bilder einfacher als die klassische Methode aus position, left, top und margin.

CSS
.flex { 
    display: flex; 
    justify-content: center; 
    align-items: center;
}
HTML
<div class="flex">
    <img src="donut.jpg" width="215" height="183" alt="…">
</div>
Bild senkrecht und wagerecht zentriert

Bilder an den Platz anpassen mit object-fit

CSS object-fit passt Bilder an den verfügbaren Platz im Layout an, entweder unter Beibehaltung des Seitenverhältnisses oder durch Aufziehen und Dehnen, um den gesamten verfügbaren Platz mit dem Bild zu füllen.

tartuffo-720

Das ist praktisch, wenn das Bild oder Video nicht vorher schon im Bildbearbeitungsprogramm oder beim Videoschnitt auf ein bestimmtes Seitenverhältnis zugeschnitten wurde.

tartuffo-720
<div class="object-fit">
    <img src="tartuffo.jpg" width="720" height="347" alt="…">
</div>
	
.object-fit { 
	width: 300px; 
	height: 300px; 
	margin: 4em auto; 
	border:1px solid green;
}
.object-fit img { 
	object-fit: cover; 
	width: 100%; 
	height: 100%;
}

Mehr zu Bilder im img-Tag mit object-fit anpassen

Alle Evergreen-Browser unterstützen object-fit, aber IE bleibt außen vor. Solange IE11 unterstützt werden muss, bleiben die bewährten Techniken.

Bilder zentrieren – die alte Methode

Da sich Bilder in einem img-Tag wie ein übergroßer Buchstabe verhalten, braucht der umfassende Block nur ein text-align: center. Alternativ kann das Bild mit display: block oder display: inline-block zentriert werden.

Um das Bild sowohl vertikal als auch horizontal zu zentrieren, wird es mit top, bottom, left und right vollkommen aus dem sichtbaren Ausschnitt verschoben. Anschließend versetzt margin: auto das Bild in die senkrechte und wagerechte Mitte des umfassenden Elements.

.parent {
    position: relative;
    overflow: hidden;
}

.child {
    position: absolute;
    top: -9999px;
    bottom: -9999px;
    left: -9999px;
    right: -9999px;
    margin: auto;
}
Bild senkrecht und wagerecht zentriert

Bilder als background-image zentrieren

Bilder können nicht nur über das img-Tag eingebunden werden, sondern auch via CSS background-image. Dann bietet background-position die einfachste Technik, das Bild innerhalb seines umfassenden Blocks zu zentrieren.

background-image Aquarell
<div class="center-frame">
  <div class="wild-frame"></div>
</div>
.center-frame { 
  width: 300px;
  height: 200px;
  overflow: hidden
}
.wild-frame {
  background: url(city-490.webp) no-repeat center; 
  width:100%;
  height: 100%
}

Thumbnails à la WordPress: object-fit

Die Medienübersicht von WordPress zeigt Bilder als quadratische Thumbnails. Dahinter steckt einfaches CSS, das die Bilder zentriert und beschneidet.

Das HTML-Markup besteht aus einem div-Element mit class="thumbnail" und dem Originalbildern im Hochformat und Querformat.

HTML
<div class="thumbnail">
   <img src="DSC00546-1024x682.jpg" width="1024" height="682" alt="…">
</div>
<div class="thumbnail">
   <img class="portrait" src="DSC04525-967x1024.jpg" width="967" height="1024" alt="…">
</div>
Thumbnail Kuppel
Thumbnail Jagdschloss
Thumbnail Türe
Thumbnail Friese
Thumbnail Schloss
Thumbnail Helmholz

Heute für das CSS in den immergrünen Browsern ein leichtes Spiel: object-fit:cover bzw. object-fit:contain setzen den Bildausschnitt angepasst ein.

CSS für Thumbnails
.thumbnail {
  width: 200px;
  height: 200px;
  overflow: hidden;
}
.thumbnail img {
  height: 200px;
  width: 100%;
  object-fit:cover;
}

.thumbnail img.portrait {
  width: 100%;
  height: auto;
}

Bilder maskieren und freistellen

Dank des WebP-Formats können wir freigestellte Bilder ohne Hintergrund in höher Qualität in die Webseite setzen. Wir können Masken aber auch ähnlich wie in Bildbearbeitungsprogrammen mit Pfaden oder weichen Alpha-Masken auf der Webseite ohne Hintergrund anzeigen, und das Bild dabei intakt lassen – nicht-destruktiv.

CSS mask-image läßt sich animieren:

.pattern {
	mask-image: url("mask-image-circle.svg");
	mask-size: 50%;
	mask-repeat: no-repeat;
	animation: position 10s infinite linear;
}
Panorama: München

Bilder mit SVG clipPath beschneiden

Eine letzte Alternative ist der SVG clipPath, der im Illustrationsprogramm unter Sichtkontrolle vorgefertigt werden kann.

<svg version="1.1" viewBox="0 0 360 360" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
   <clipPath id="cp">
      <rect x="180" y="0" width="360" height="360"/>
   </clipPath>
   <image transform="translate(-180)" width="720" height="347" clip-path="url(#cp)" xlink:href="tartuffo.jpg"/>
</svg>

Mehr zu SVG clipPath – Bilder und Grafik beschneiden und freistellen

img responsive – vertikal / horizontal anpassen

Fast immer sorgt width:100% zusammen mit height:auto dafür, dass sich Bilder an die Maße ihres Containers anpassen, ohne dabei das Seitenverhältnis anzutasten. Bilder im Landschafts-Format (breiter als hoch) bereiten keine Probleme, aber für Bilder im Hochformat funktioniert die Allround-Formel nicht.

niederrhein
flora
.quad {
  display: flex; 
  justify-content: center; 
  align-items:center; 
}
.quad img {
  max-height: 100%;
  max-width: 100%;
  width:auto;
  height:auto;
}