Seit einiger Zeit gibt es in modernen Browsern eine neue Möglichkeit, dies zu tun.
hintergrund-überblend-modus können Sie einige interessante Effekte erzielen, darunter die Graustufen-Konvertierung
Der Wert Leuchtkraft auf weißem Hintergrund erlaubt es. (schweben, um es in grau zu sehen)
.test {
width: 300px;
height: 200px;
background: url("http://placekitten.com/1000/750"), white;
background-size: cover;
}
.test:hover {
background-blend-mode: luminosity;
}
<div class="test"></div>
Die Helligkeit wird aus dem Bild, die Farbe aus dem Hintergrund entnommen. Da dieser immer weiß ist, gibt es keine Farbe.
Aber sie erlaubt noch viel mehr.
Sie können die Effekteinstellung auf 3 Ebenen animieren. Die erste Ebene ist das Bild und die zweite Ebene ist ein weiß-schwarzer Farbverlauf. Wenn Sie den Mischmodus "Multiplizieren" darauf anwenden, erhalten Sie auf dem weißen Teil ein weißes Ergebnis wie zuvor, auf dem schwarzen Teil jedoch das Originalbild (Multiplizieren mit Weiß ergibt Weiß, Multiplizieren mit Schwarz hat keine Wirkung).
Auf dem weißen Teil des Farbverlaufs erhalten Sie denselben Effekt wie zuvor. Auf dem schwarzen Teil des Verlaufs überlagern Sie das Bild mit sich selbst, und das Ergebnis ist das unveränderte Bild.
Jetzt müssen Sie nur noch den Farbverlauf verschieben, um diesen Effekt dynamisch zu gestalten: (bewegen Sie den Mauszeiger, um ihn in Farbe zu sehen)
div {
width: 600px;
height: 400px;
}
.test {
background: url("http://placekitten.com/1000/750"),
linear-gradient(0deg, white 33%, black 66%), url("http://placekitten.com/1000/750");
background-position: 0px 0px, 0px 0%, 0px 0px;
background-size: cover, 100% 300%, cover;
background-blend-mode: luminosity, multiply;
transition: all 2s;
}
.test:hover {
background-position: 0px 0px, 0px 66%, 0px 0px;
}
<div class="test"></div>
Referenz
Kompatibilitätsmatrix
14 Stimmen
"Es muss nicht IE-kompatibel sein (und ich nehme an, dass es das auch nicht sein wird)" ?? IE bietet eine Reihe von DX-Filter seit 1997 (IE4), die diese Aufgabe nur mit CSS und vielem mehr erledigt. Jetzt haben sie weggefallene DX-Filter im IE10 und halten sich strikt an die standardmäßigen SVG-basierten Filter. Vielleicht möchten Sie einen Blick werfen auf ce y diese Demo .
8 Stimmen
@vulcanraven Es ist nicht wirklich "nur CSS" - wenn Sie Active Scripting im IE deaktivieren, funktionieren die Filter nicht mehr.
3 Stimmen
@robertc, das ist genau richtig. Wenn Sie dagegen Javascript in einem beliebigen Browser deaktivieren, funktioniert fast jede RIA, einschließlich Stackoverflow, nicht mehr (es sei denn, die Webentwickler haben die HTML-only-Version als Fallback implementiert).
2 Stimmen
Verwenden Sie einfach die CSS stackoverflow.com/questions/286275/gray-out-image-with-css/ Meine Antwort auf diese Frage