我有填充内容和透明内容的图像。我想获得背景颜色,但仅限于填充内容(忽略透明)是否可能?我可以这样做吗?
我的项目:can be seen here
$("#hairbutton").click(function() {
var haircolor = $('#haircolorinput').val();
$(".img-wrap#hair img").css("background-color", haircolor);
});
$("#facebutton").click(function() {
var facecolor = $('#facecolorinput').val();
$(".img-wrap#face img").css("background-color", facecolor);
});

@-webkit-keyframes head {
from {
top: 0px;
}
to {
top: 1px;
}
}
@keyframes head {
from {
top: 0px;
}
to {
top: 1px;
}
}
#head {
position: relative;
-webkit-animation: head 1.5s infinite;
animation: head 1.5s infinite;
}
.img-wrap {
width: 153px;
height: 78px;
overflow: hidden;
width: 90px;
height: 60px;
clear: both;
}
.img-wrap img {
width: 90px;
height: 60px;
background-color: green;
}
input {
padding: 5px;
border-radius: 5px;
border: 2px solid black;
float: left;
height: 18px;
}
input:focus {
outline: 0;
}
#go {
padding: 5px;
border: 2px solid black;
width: auto;
display: table;
border-radius: 5px;
float: left;
height: 10px;
margin-left: 5px;
cursor: pointer;
height: 33px;
}
#face {
position: relative;
bottom: 35px;
left: 35px;
}
.form {
float: left;
clear: both;
}
button {
position: relative;
left: 5px;
top: 5px;
}
.clear {
clear: both;
}

<div class="form">
<input id="haircolorinput" name="haircolor" type="text" placeholder="Hair HEX">
<button id="hairbutton">Change</button>
</div>
<div class="form">
<input style="margin-top: 5px; margin-bottom: 50px;" id="facecolorinput" name="facecolor" type="text" placeholder="Face HEX">
<button id="facebutton">Change</button>
</div>
<div class="clear"></div>
<div id="head">
<div class="img-wrap" id="hair" style="z-index: -100;">
<img src="http://i.imgur.com/mz3GRLl.png" alt="" />
</div>
<div class="img-wrap" id="face" style="z-index: 100; width: 36px; height: 36px;">
<img src="http://i.imgur.com/DiHXscR.png" alt="" style="width: 36px; height: 36px;" />
</div>
</div>
&#13;
答案 0 :(得分:0)
要回答您的问题否,但您可以将背景颜色设置为图像,以便背景显示在图像的透明部分上:
tl; dr 有多种方法可以更改图像/对象的各个部分。我认为最简单的方法是使用 svg 嵌入的图像/对象。并用css设置该元素的填充。
<强> CSS 强>
#yourimage:hover {
background-color: blue;
}
使用png解决方案的挫折:
这将填充任何背景颜色。因此,为避免在图像周围出现blue
背景,通常图像上会出现白色或任何其他背景。例如,请参阅小提琴。
完全可以在画布中设置strokeStyle。 你好超级好吗?好的画布没有对象或元素,它只渲染给它的东西。因此,在绘制形状的代码中,您必须定义渲染之前所需的颜色。也许有一天画布上会有元素?
Svg元素可以有一个id!所以我们可以简单地制作一个svg:
<强> HTML 强>
<svg width="100" height="100">
<circle id="favcirc" cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow"/>
<svg/>
并访问元素的填充值!
<强> CSS 强>
#favcirc {
fill = "#F00"
}
ps 如果你很幸运并且只有一种颜色你可以用过滤器旋转它: Filter demo