Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

cross-fade()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die cross-fade() CSS Funktion kann verwendet werden, um zwei oder mehr Bilder mit einer definierten Transparenz zu mischen. Sie kann für viele grundlegende Bildmanipulationen genutzt werden, wie zum Beispiel das Tönen eines Bildes mit einer Vollfarbe oder das Hervorheben eines bestimmten Bereichs der Seite durch das Kombinieren eines Bildes mit einem radialen Verlauf.

Syntax

Warnung: Die Spezifikation und die aktuellen Implementierungen haben unterschiedliche Syntaxen. Die Syntax der Spezifikation wird zuerst erklärt.

Spezifikationssyntax

Die cross-fade() Funktion nimmt eine Liste von Bildern mit einem Prozentwert auf, der definiert, wie viel von jedem Bild in Bezug auf die Deckkraft beibehalten wird, wenn es mit den anderen Bildern gemischt wird. Der Prozentwert muss ohne Anführungszeichen kodiert werden, muss das '%'-Symbol enthalten und sein Wert muss zwischen 0% und 100% liegen.

Die Funktion kann in CSS überall verwendet werden, wo eine gewöhnliche Bildreferenz verwendet werden kann.

Cross-fade-Prozentsätze

Denken Sie an den Prozentsatz als Deckkraftwert für jedes Bild. Das bedeutet, ein Wert von 0% macht das Bild vollständig transparent, während ein Wert von 100% das Bild vollständig undurchsichtig macht.

css
cross-fade(url("white.png") 0%, url("black.png") 100%); /* fully black */
cross-fade(url("white.png") 25%, url("black.png") 75%); /* 25% white, 75% black */
cross-fade(url("white.png") 50%, url("black.png") 50%); /* 50% white, 50% black */
cross-fade(url("white.png") 75%, url("black.png") 25%); /* 75% white, 25% black */
cross-fade(url("white.png") 100%, url("black.png") 0%); /* fully white */
cross-fade(url("green.png") 75%, url("red.png") 75%); /* both green and red at 75% */

Wenn Prozentsätze ausgelassen werden, werden alle angegebenen Prozentsätze zusammengezählt und von 100% subtrahiert. Wenn das Ergebnis größer als 0% ist, wird das Ergebnis gleichmäßig auf alle Bilder mit ausgelassenen Prozentsätzen verteilt.

Im einfachsten Fall werden zwei Bilder miteinander verblasst. Dazu muss nur eines der Bilder einen Prozentsatz haben, das andere wird entsprechend verblasst. Zum Beispiel ergibt ein Wert von 0% für das erste Bild nur das zweite Bild, während 100% nur das erste ergibt. Ein Wert von 25% zeigt das erste Bild zu 25% und das zweite zu 75%. Der 75%-Wert ist umgekehrt und zeigt das erste Bild zu 75% und das zweite zu 25%.

Das oben genannte hätte auch so geschrieben werden können:

css
cross-fade(url("white.png") 0%, url("black.png")); /* fully black */
cross-fade(url("white.png") 25%, url("black.png")); /* 25% white, 75% black */
cross-fade(url("white.png"), url("black.png")); /* 50% white, 50% black */
cross-fade(url("white.png") 75%, url("black.png")); /* 75% white, 25% black */
cross-fade(url("white.png") 100%, url("black.png")); /* fully white */
cross-fade(url("green.png") 75%, url("red.png") 75%); /* both green and red at 75% */

Wenn keine Prozentsätze angegeben werden, sind beide Bilder zu 50% opak, wobei ein Cross-Fade als gleichmäßige Mischung beider Bilder gerendert wird. Das 50%/50%-Beispiel oben brauchte keine aufgelisteten Prozentsätze, da bei ausgelassenem Prozentsatz die enthaltenen Prozentsätze zusammengezählt und von 100% subtrahiert werden. Das Ergebnis, wenn es größer als 0 ist, wird dann gleichmäßig auf alle Bilder mit ausgelassenen Prozentsätzen verteilt.

Im letzten Beispiel ist die Summe beider Prozentsätze nicht 100%, daher enthalten beide Bilder ihre jeweiligen Deckkräfte.

Wenn keine Prozentsätze deklariert sind und drei Bilder enthalten sind, ist jedes Bild zu 33,33% opak. Die zwei folgenden Zeilen sind (fast) identisch:

css
cross-fade(url("red.png"), url("yellow.png"), url("blue.png")); /* all three will be 33.3333% opaque */
cross-fade(url("red.png") 33.33%, url("yellow.png") 33.33%, url("blue.png") 33.33%);

Ältere, implementierte Syntax

css
cross-fade( <image>, <image>, <percentage> )

Die Spezifikation für die cross-fade() Funktion erlaubt mehrere Bilder und dass jedes Bild Transparenzwerte hat, die unabhängig von den anderen Werten sind. Das war nicht immer der Fall. Die ursprüngliche Syntax, die in einigen Browsern implementiert wurde, erlaubte nur zwei Bilder, wobei die Summe der Transparenz dieser beiden Bilder genau 100% betrug. Die ursprüngliche Syntax wird in Safari unterstützt und mit dem -webkit- Präfix in Chrome, Opera und anderen auf Blink basierenden Browsern unterstützt.

css
cross-fade(url("white.png"), url("black.png"), 0%);   /* fully black */
cross-fade(url("white.png"), url("black.png"), 25%);  /* 25% white, 75% black */
cross-fade(url("white.png"), url("black.png"), 50%);  /* 50% white, 50% black */
cross-fade(url("white.png"), url("black.png"), 75%);  /* 75% white, 25% black */
cross-fade(url("white.png"), url("black.png"), 100%); /* fully white */

In der implementierten Syntax werden die zwei durch Kommas getrennten Bilder zuerst deklariert, gefolgt von einem Komma und einem erforderlichen Prozentwert. Das Auslassen des Kommas oder Prozents macht den Wert ungültig. Das Prozent gibt die Deckkraft des zuerst deklarierten Bildes an. Das enthaltene Prozent wird von 100% subtrahiert, wobei die Differenz die Deckkraft des zweiten Bildes ist.

Das Grün/Rot-Beispiel (mit den Prozentsätzen, die 150% ergeben) und das Gelb/Rot/Blau-Beispiel (mit drei Bildern) aus dem Abschnitt Spezifikationssyntax sind in dieser Implementierung nicht möglich.

Barrierefreiheit

Browser stellen keine speziellen Informationen zu Hintergrundbildern für unterstützende Technologien bereit. Dies ist vor allem für Screenreader wichtig, da ein Screenreader seine Anwesenheit nicht ankündigen wird und daher seinen Nutzern nichts mitteilt. Wenn das Bild Informationen enthält, die essentiell für das Verständnis des Gesamtzwecks der Seite sind, ist es besser, es semantisch im Dokument zu beschreiben. Wenn Hintergrundbilder verwendet werden, stellen Sie sicher, dass der Farbkontrast so groß ist, dass Text über dem Bild ebenso lesbar ist, wie wenn die Bilder fehlen.

Formale Syntax

<cross-fade()> = 
cross-fade( <cf-image># )

<cf-image> =
[ <image> | <color> ] &&
<percentage [0,100]>?

<image> =
<url> |
<gradient>

<url> =
<url()> |
<src()>

<url()> =
url( <string> <url-modifier>* ) |
<url-token>

<src()> =
src( <string> <url-modifier>* )

Beispiele

Ältere Syntax für cross-fade

HTML

html
<div class="cross-fade"></div>

CSS

css
.cross-fade {
  width: 300px;
  height: 300px;
  background-image: -webkit-cross-fade(url("br.png"), url("tr.png"), 75%);
  background-image: cross-fade(url("br.png"), url("tr.png"), 75%);
}

Ergebnis

Spezifikationen

Specification
CSS Images Module Level 4
# cross-fade-function

Browser-Kompatibilität

Siehe auch