CSS mask-image: Bilder maskieren

CSS mask image bringt Masken und Freistellpfade für alle Bitmap-Formate. Das Originalbild bleibt erhalten und die Maske kann animiert werden.

Bilder in Bildbearbeitungs- und Satzprogrammen freistellen

Das Maskieren oder Freistellen von Motiven in Fotos ist ein Schritt hin zu den Funktionen der Printmedien. Ohne Masken oder Pfade können nur WebP-Bilder und PNG-Bitmaps mit 24 Bit Farbtiefe mit einem transparenten Hintergrund angezeigt werden. JPEG bietet diese Möglichkeit von Haus aus nicht.

Photoshop, Illustrator, XPress und InDesign nutzen Freistellpfade oder Alphamasken, um Bilder nicht-destruktiv ohne Hintergrund anzuzeigen. Freistellpfade ziehen eine exakte Kontur rund um das Motiv. Alles außerhalb der Kontur wird transparent.

Maske mit Clippath – harter Rand

Die Alphamaske (auch Alphakanal) setzt Motive sowohl mit einer harten als auch weichen Kontur und transparentem Hintergrund (»Vignette«) frei.

Freistellen mit weichem Rand (Vignette)

Maskieren mit CSS mask

Auf Webseiten sorgen fast immer noch GIF- oder PNG-Bilder mit transparentem Hintergrund für Freisteller, aber diese alten Bildformate führen zu großen Dateien. Webkit präsentierte schon 2008 CSS mask für Alphamasken und Freisteller mit Pfaden: mask-image stellt Bilder – gleich ob JPG, PNG oder WebP – anhand von Schablonen, SVG-Pfaden und Verläufen frei.

Die Farbe der Maske spielt übrigens keine Rolle, sondern nur die Transparenz der Pixel zählt.

.mask {
    mask-image : url(mask.webp);
    // mask Kurzschrift für mask-image 
    mask: url(mask.webp)
}
BILD 66 KB
MASKE 8 KB
Maskiertes Bild 66 KB + 8 KB

Bild + Maske = Freisteller

Die Webkit- und Blink-Browser Chrome, Safari und Opera unterstützen das Maskieren mit CSS mask. Firefox unterstützt mask seit Version 53 (2017) ohne Präfix.

Die Maske ist ein WebP-Format, weil WebP Transparenz mit weichen Übergängen unterstützt. Eine weiche Maske kann auch kleiner angelegt und durch mask-size: 100% aufgezogen werden.

.softmask img {
mask-image: url('stoff-460-maske.webp');
mask-size: 100%;
}

mask-image animieren, für Text, mit CSS-gradient

JPG kennt keine Transparenz und PNG24 tendiert zu ausufernden Dateigrößen – da hat CSS mask-image Sinn gemacht. Im Grunde genommen können wir heute dank WebP das Motiv ebensogut im Bildbearbeitungsprogramm freistellen.

Original
Original

Aber mask-image läßt sich locker animieren, die Maske muss kein Bild, sondern kann auch ein Verlauf (CSS Gradient) oder sogar ein Text sein.

.circle img {
mask-image: url('softcircle.svg');
mask-size: 80% 80%;
mask-position: 0% 0%;
mask-repeat:no-repeat;
animation: robin 30s linear infinite;
}

@keyframes robin {
0% { mask-position: 0% 0%; mask-position: 0% 0%;}
10% { mask-position: 100% 20%; mask-position: 100% 20%; }
20% { mask-position: 0% 40%; mask-position: 0% 40%; }
30% { mask-position: 100% 60%; mask-position: 100% 60%; }
40% { mask-position: 0% 80%; mask-position: 0% 80%; }
50% { mask-position: 100% 100%; mask-position: 100% 100%; }
60% { mask-position: 0% 80%; mask-position: 0% 80%; }
70% { mask-position: 100% 60%; mask-position: 100% 60%; }
80% { mask-position: 0% 40%; mask-position: 0% 40%; }
90% { mask-position: 100% 20%; mask-position: 100% 20%; }
100% { mask-position: 0% 0%; mask-position: 0% 0%;}
}

Zu guter Letzt stellt mask-image nicht nur Motive in Bildern frei, sondern wirkt bei so ziemlich allen HTML-Elementen. Mehr zu transparenten Hintergründen und Freistellern in CSS mask-image.

mask-image vs clip-path vs clip Path

Wir stehen vor einer Vielfalt von Techniken, um Motive mit einem transparenten Hintergrund freizustellen oder zu maskieren.

  • CSS mask-image ist in erster Linie gedacht, um Motive in Fotos mit weichem Übergang ohne Hintergrund zu zeigen.
  • CSS clip-path – Freistellen mit harter Kante – bringt Formen wie Kreise, Rechtecke und Rauten mit. clip-path erzeugt eine harte Kontur: Es gibt nur »Zeigen« oder »Nicht-Zeigen«, aber keine weichen Übergänge wie bei mask-image.  
  • SVG clipPath – Masken in SVG – funktioniert seit ewig und drei Tagen zuverlässig.

mask-image und clip-path beim W3C

Das W3C hat seit 2012 eine Reihe von Empfehlungen und Drafts in die Wege geleitet, aber alle stehen noch im Level 1.

Daneben sind weitere Techniken der Bildbearbeitung in CSS eingezogen:

CSS-Filter: CSS Compositing and Blending überblendet Bilder wie der Füllmodus für Ebenen in Photoshop (Normal, Multiplizieren, Weiches Licht, Hartes Licht, Differenz … die ganze Palette).

CSS Shapes: Exclusions and Shapes Module Level beschreibt das Umfließen von Elementen durch Inline-Inhalte. CSS Masking beschreibt Masken und Freistellpfade.

Externe Quellen

2024-02-12 SITEMAP BLOG