Invert colors of an image in CSS or JavaScript
JavascriptCssColorsJavascript Problem Overview
Javascript Solutions
Solution 1 - Javascript
CSS3 has a new filter attribute which will only work in webkit browsers supported in webkit browsers and in Firefox. It does not have support in IE or Opera mini:
img {
-webkit-filter: invert(1);
filter: invert(1);
}
<img src="http://i.imgur.com/1H91A5Y.png">
Solution 2 - Javascript
Can be done in major new broswers using the code below
.img {
-webkit-filter:invert(100%);
filter:progid:DXImageTransform.Microsoft.BasicImage(invert='1');
}
However, if you want it to work across all browsers you need to use Javascript. Something like this gist will do the job.
Solution 3 - Javascript
You can apply the style via javascript. This is the Js code below that applies the filter to the image with the ID theImage.
function invert(){
document.getElementById("theImage").style.filter="invert(100%)";
}
And this is the
<img id="theImage" class="img-responsive" src="http://i.imgur.com/1H91A5Y.png"></img>
Now all you need to do is call invert() We do this when the image is clicked.
function invert(){
document.getElementById("theImage").style.filter="invert(100%)";
}
Click image to invert
<img id="theImage" class="img-responsive" src="http://i.imgur.com/1H91A5Y.png" onClick="invert()" ></img>
We use this on our website
Solution 4 - Javascript
For inversion from 0 to 1 and back you can use this library InvertImages, which provides support for IE 10. I also tested with IE 11 and it should work.