Ich möchte die Bildhelligkeit in CSS verringern. Ich habe viel gesucht, aber alles, was ich habe, ist, wie man die Deckkraft ändert, aber das macht das Bild heller. Kann mir jemand helfen ?
Ich habe es benutzt, aber es erhöht die Helligkeit ...
Shadi
Die akzeptierte Antwort funktioniert gut, aber es gibt auch einen neuen CSS-Standardeffekt filter, den Sie für die Zukunft kennen sollten. Siehe meine Antwort.
Spudley
1
@shady, können Sie diese Frage noch einmal wiederholen, um eine der Antworten zu markieren, die Lösungen mit Filtern als richtig anbieten. Die Antwort, die Sie als richtig markiert haben, wäre der Weg, dies im Jahr 2006 zu tun.
Wes Modes
Antworten:
174
Die Funktion, die Sie suchen, ist filter. Es ist in der Lage, eine Reihe von Bildeffekten zu erzielen, einschließlich der Helligkeit:
Beachten Sie, dass dies erst seit kurzem in CSS als Feature verfügbar ist. Es ist möglich, aber eine große Anzahl von Browsern da draußen wird es noch nicht unterstützen, und diejenigen , die Unterstützung zu tun wird es einen Anbieter Präfix erfordern (dh -webkit-filter:, -moz-filterusw.).
Es ist auch möglich, solche Filtereffekte mit SVG durchzuführen. Die SVG-Unterstützung für diese Effekte ist gut etabliert und wird weitgehend unterstützt (die CSS-Filterspezifikationen wurden aus den vorhandenen SVG-Spezifikationen übernommen).
Beachten Sie auch, dass dies nicht mit dem proprietären filterStil zu verwechseln ist, der in alten IE-Versionen verfügbar ist (obwohl ich ein Problem mit dem Namespace-Konflikt vorhersagen kann, wenn der neue Stil sein Herstellerpräfix fallen lässt).
Wenn nichts davon für Sie funktioniert, können Sie die vorhandene opacityFunktion weiterhin verwenden , aber nicht so, wie Sie denken: Erstellen Sie einfach ein neues Element mit einer durchgehenden dunklen Farbe, platzieren Sie es über Ihrem Bild und blenden Sie es mit aus opacity. Der Effekt besteht darin, dass das Bild dahinter abgedunkelt wird.
Schließlich können Sie die Browserunterstützung filterhier überprüfen .
Die Deckkraft macht nichts heller oder dunkler. Es ändert die Transparenz des Objekts. Ob dies dazu führt, dass etwas heller oder dunkler wird, hängt von der Hintergrundfarbe hinter dem Objekt ab, dessen Deckkraft Sie ändern. Im Gegensatz zu Ihrer Aussage können Sie etwas dunkler machen, indem Sie die Deckkraft erhöhen, wenn Sie es auf einen schwarzen Hintergrund stellen. Ein zu 99% transparentes Bild auf schwarzem Hintergrund erscheint fast schwarz. Ich verstehe daher nicht, warum ein separates Overlay-Div erforderlich ist. Sie können es einfach auf einen schwarzen Hintergrund setzen. Beispiel: jsbin.com/isemec/1/edit
NickG
@ NickG Ich sagte, dass unter der Annahme von weißem Hintergrund. Was Sie getan haben, ist dasselbe wie mein Code, nur dass ich eine halbtransparente schwarze Überlagerung über das Bild gelegt habe und Sie einen undurchsichtigen schwarzen Hintergrund mit einem halbtransparenten Bild darüber haben.
Sachleen
17
Kurz gesagt, platzieren Sie Schwarz hinter dem Bild und verringern Sie die Opaktie. Sie können dies tun, indem Sie das Bild in ein Div einschließen und dann die Deckkraft des Bildes verringern.
Diese Richtlinie "Lasst uns Präfixe nur für den Fall werfen" ist falsch. Erstens, wenn Opera es jemals unterstützt, wird es nicht haben -o-(Opera verwendet jetzt Webkit / Blink), zweitens sprang Firefox direkt in ein nicht vorangestelltes filter, drittens haben Sie die falsche Reihenfolge, ein nicht vorangestelltes sollte das letzte sein, das vierte, Die Syntax für IE -ms-filterist anders ( progid:DXImageTransformusw.), fünftens ist die Syntax für Firefox anders und erfordert SVG ( siehe Dokumente ). Sechstens werden neue Funktionen wahrscheinlich nicht vorangestellt, da die Anbieter erkannt haben, wie schlecht eine Idee war
Camilo Martin
5
@CamiloMartin, dann hätten Sie eine vollständigere Antwort auf diese Frage geben sollen, da sie noch nicht vollständig beantwortet wurde.
Wes Modes
-Webkit-Filter: Helligkeit () / -Webkit-Filter: Kontrast () funktioniert. Dies ist eine passende Antwort auf die Frage.
Bitte posten Sie nicht genau dieselbe Antwort auf mehrere Fragen: Entweder passt sie nicht für alle oder die Fragen sind Duplikate, die als solche gekennzeichnet / geschlossen werden sollten.
Wenn Sie ein Hintergrundbild haben, können Sie dies tun: Legen Sie einen rgba () -Gradienten für das Hintergrundbild fest.
.img_container {float: left;width:300px;height:300px;display: flex;justify-content: center;align-items: center;border:1px solid #fff;}.image_original {background:url(https://i.ibb.co/GkDXWYW/demo-img.jpg);}.image_brighness {background: linear-gradient(0deg, rgba(0,0,0,0.5), rgba(0,0,0,0.5)),/* the gradient on top, adjust color and opacity to your taste */url(https://i.ibb.co/GkDXWYW/demo-img.jpg);}.img_container p {color:#fff;font-size:28px;}
Ausgezeichnet. Ich brauchte eine Lösung, um ein Hintergrundbild abzudunkeln, und alle anderen Antworten verdunkeln das gesamte Div.
Nuander
1
Sie können die folgenden CSS-Filter und das Beispiel für das Web-Kit verwenden. Bitte schauen Sie sich dieses Beispiel an: http://jsfiddle.net/m9sjdbx6/4/
danke aber dass das Erhöhen der Helligkeit es nicht verringert !!
Shadi
Das hängt von der Hintergrundfarbe ab.
Apokalypse
rechts @zgnilec es hängt von der Hintergrundfarbe ab ... wenn Sie es schwarz setzen, wird die Helligkeit des Bildes verringert
Shadi
Dies funktioniert nicht, um die Helligkeit um mehr als 100% zu erhöhen. Die Deckkraft kann nur bis zu 1
betragen
Da ich kein Englisch spreche, wollte ich eigentlich nach "Opazität" suchen und bekam diese Antwort trotzdem vorgeschlagen. Auch wenn diese Antwort die Frage nicht beantwortet, ist es gut zu wissen, dass dies opacitydie Helligkeit erhöht. ;)
filter
, den Sie für die Zukunft kennen sollten. Siehe meine Antwort.Antworten:
Die Funktion, die Sie suchen, ist
filter
. Es ist in der Lage, eine Reihe von Bildeffekten zu erzielen, einschließlich der Helligkeit:Einen hilfreichen Artikel dazu finden Sie hier: http://www.html5rocks.com/de/tutorials/filters/understanding-css/
Ein anderer: http://davidwalsh.name/css-filters
Und vor allem die W3C-Spezifikationen: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
Beachten Sie, dass dies erst seit kurzem in CSS als Feature verfügbar ist. Es ist möglich, aber eine große Anzahl von Browsern da draußen wird es noch nicht unterstützen, und diejenigen , die Unterstützung zu tun wird es einen Anbieter Präfix erfordern (dh
-webkit-filter:
,-moz-filter
usw.).Es ist auch möglich, solche Filtereffekte mit SVG durchzuführen. Die SVG-Unterstützung für diese Effekte ist gut etabliert und wird weitgehend unterstützt (die CSS-Filterspezifikationen wurden aus den vorhandenen SVG-Spezifikationen übernommen).
Beachten Sie auch, dass dies nicht mit dem proprietären
filter
Stil zu verwechseln ist, der in alten IE-Versionen verfügbar ist (obwohl ich ein Problem mit dem Namespace-Konflikt vorhersagen kann, wenn der neue Stil sein Herstellerpräfix fallen lässt).Wenn nichts davon für Sie funktioniert, können Sie die vorhandene
opacity
Funktion weiterhin verwenden , aber nicht so, wie Sie denken: Erstellen Sie einfach ein neues Element mit einer durchgehenden dunklen Farbe, platzieren Sie es über Ihrem Bild und blenden Sie es mit ausopacity
. Der Effekt besteht darin, dass das Bild dahinter abgedunkelt wird.Schließlich können Sie die Browserunterstützung
filter
hier überprüfen .quelle
OP möchte die Helligkeit verringern , nicht erhöhen. Durch die Deckkraft erscheint das Bild heller und nicht dunkler.
Sie können dies tun, indem Sie ein schwarzes Div über das Bild legen und die Deckkraft dieses Div einstellen.
DEMO
quelle
Kurz gesagt, platzieren Sie Schwarz hinter dem Bild und verringern Sie die Opaktie. Sie können dies tun, indem Sie das Bild in ein Div einschließen und dann die Deckkraft des Bildes verringern.
Beispielsweise:
Hier ist eine JSFiddle.
quelle
Du könntest benutzen:
quelle
-o-
(Opera verwendet jetzt Webkit / Blink), zweitens sprang Firefox direkt in ein nicht vorangestelltesfilter
, drittens haben Sie die falsche Reihenfolge, ein nicht vorangestelltes sollte das letzte sein, das vierte, Die Syntax für IE-ms-filter
ist anders (progid:DXImageTransform
usw.), fünftens ist die Syntax für Firefox anders und erfordert SVG ( siehe Dokumente ). Sechstens werden neue Funktionen wahrscheinlich nicht vorangestellt, da die Anbieter erkannt haben, wie schlecht eine Idee warMit CSS3 können wir ein Bild einfach anpassen. Denken Sie jedoch daran, dass dies das Bild nicht verändert. Es wird nur das angepasste Bild angezeigt.
Weitere Informationen finden Sie im folgenden Code.
So machen Sie ein Bild grau:
Um einen Sepia-Look zu geben:
So passen Sie die Helligkeit an:
So stellen Sie den Kontrast ein:
So verwischen Sie ein Bild:
quelle
Ich habe das heute gefunden. Es hat mir wirklich geholfen. http://www.propra.nl/playground/css_filters/
Alles was Sie brauchen, ist dies zu Ihrem CSS-Stil hinzuzufügen:
quelle
Wenn Sie ein Hintergrundbild haben, können Sie dies tun: Legen Sie einen rgba () -Gradienten für das Hintergrundbild fest.
quelle
Sie können die folgenden CSS-Filter und das Beispiel für das Web-Kit verwenden. Bitte schauen Sie sich dieses Beispiel an: http://jsfiddle.net/m9sjdbx6/4/
quelle
Ich habe diese coole Lösung: https://jsfiddle.net/yLcd5z0h/
quelle
Versuchen Sie dies, wenn Sie ein schwarzes Bild in ein weißes konvertieren müssen:
quelle
Mögen
quelle
opacity
die Helligkeit erhöht. ;)