有一個叫gradientmaps.js *大圖書館負責處理這真的很好。
<img id="myimage" src="photo.jpg">
<script src="gradientmaps.min.js"></script>
<script>
var target = document.getElementById('myimage');
var gradientMap = "blue, green, yellow";
GradientMaps.applyGradientMap(target, gradientMap);
</script>
該腳本會將您的顏色列表轉換爲相應的SVG過濾器代碼。然後它生成一個<svg>
元素。它將一個唯一的ID分配給<filter>
元素,然後將該過濾器應用於您的DOM元素。
上面的例子執行後,DOM會變成這個樣子....
<svg version="1.1" width="0" height="0">
<filter id="filter-1489690359932">
<feColorMatrix type="matrix" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0" result="gray"></feColorMatrix>
<feComponentTransfer color-interpolation-filters="sRGB">
<feFuncR type="table" tableValues="0 0 1"></feFuncR>
<feFuncG type="table" tableValues="0 0.5019607843137255 1"></feFuncG>
<feFuncB type="table" tableValues="1 0 0"></feFuncB>
<feFuncA type="table" tableValues="1 1 1"></feFuncA>
</feComponentTransfer>
</filter>
</svg>
<img id="myimage" src="photo.jpg"
data-gradientmap-filter="filter-1489690359932"
style="filter: url("#filter-1489690359932");">
*我已經鏈接到我的這個項目,這增加了對IE/EDGE的支持的叉。