있습니다. 이 솔루션은 현재 Chrome에서만 작동합니다.
효과를 보려면 chrome : // flags/및 "실험용 웹 플랫폼 기능 사용"을 방문하십시오.
필터와 블렌드 모드를 같은 요소에 적용한 경우 실패했습니다. 사실 이미지를 사용하여 요소에 회색 음영 필터를 계속 사용하려고 시도한 다음 새 요소를 중첩하여 혼합 혼합 모드를 시도했습니다. 그것은 또한 실패했다.
궁극적으로, 나는 이미지 위에 두 개의 새로운 요소 (레이어)를 만들었습니다. 그런 다음 믹스 - 블렌드 모드를 사용하여 효과를 얻었습니다. 첫 번째 요소 (이미지 바로 위의 레이어)는 혼합 혼합 모드를 사용했습니다. 배경색이 검정색 (또는 흰색) 인 채도로 이미지를 회색조로 변환합니다. 맨 위에있는 요소는 노란색이며 혼합 - 혼합 모드 : 곱하십시오.
전 (前) 및 : 후 (after)라는 의사 요소를 사용하여 마크 업을 변경하지 않고 그대로 둘 수있었습니다. 당신은 크로스 브라우저 솔루션을 찾고 있다면
<div id="red"></div>
<div id="orange"></div>
<div id="yellow"></div>
<div id="yellow2"></div>
#red{
width:250px;
height:200px;
background:red url(http://www.mucky-pups.co/wp-content/uploads/2013/05/9.jpg);
background-size:250px 200px;}
#red:hover{
background-blend-mode: multiply; }
#orange{
width:250px;
height:200px;
background:orange url(http://0.tqn.com/d/friendship/1/S/R/-/-/-/special-dog-breeds.jpg); background-size:250px 200px;}
#orange:hover{
background-blend-mode: multiply;}
#yellow{
width:250px;
height:200px;
background:yellow url(http://stylonica.com/wp-content/uploads/2014/03/Puppy-3-dogs-1993798-1024-76811.jpg); background-size:250px 200px;}
#yellow:hover{
background-blend-mode: multiply;}
#yellow2{
width:250px;
height:200px;
background:yellow url(http://stylonica.com/wp-content/uploads/2014/03/Puppy-3-dogs-1993798-1024-76811.jpg); background-size:250px 200px;
position: relative;
}
#yellow2:after, #yellow2:before {
content: ' ';
display: none;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
#yellow2:before {
background-color: black;
mix-blend-mode: saturation;
}
#yellow2:after {
background-color: yellow;
mix-blend-mode: multiply;
}
#yellow2:hover:before, #yellow2:hover:after {
display: block;
}
http://jsfiddle.net/dzwH4/8/
, 당신은 IE < = 9에 대해 같은 (등 FF, IE10) SVG에 대한 feBlend를 사용하여 접근 방법과 dxFilters 걸릴 수 있습니다.
UPDATE :
가 여기에 내가 크롬, FF, 오페라, IE10, IE11, 사파리 7 OSX에서 테스트 SVG 솔루션입니다.
http://jsfiddle.net/5pmmet6b/4/
<div id="puppy">
<svg>
<defs>
<filter id="colorize_yellow" color-interpolation-filters="sRGB">
<feFlood flood-color="yellow" result="A"/>
<feColorMatrix type="saturate" in="SourceGraphic" values="0" result="B"/>
<feBlend mode="multiply" in2="B" in="A"/>
</filter>
</defs>
<image id="yellow" filter="url(#colorize_yellow)" x="0" y="0" width="100%" height="100%" xlink:href="http://stylonica.com/wp-content/uploads/2014/03/Puppy-3-dogs-1993798-1024-76811.jpg"/>
</svg>
</div>
#puppy {
background: url('http://stylonica.com/wp-content/uploads/2014/03/Puppy-3-dogs-1993798-1024-76811.jpg');
background-size: 249px 187px;
position: relative;
}
#puppy svg {
left: 0;
overflow: hidden;
position: absolute;
top: 0;
}
#puppy, #puppy svg {
height: 187px;
width: 249px;
}
#yellow {
opacity: 0;
}
#yellow:hover {
opacity: 1;
}
이전 인터넷 익스플로러 방법 : IE 6-9에서
작품 : 그냥이 볼 만
<!DOCTYPE html>
<html>
<head>
<title>Light Filter Sample</title>
<style type="text/css">
div, img {
height: 200px;
width: 250px;
}
#image {
position: relative;
}
#grayscale {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)";
filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
}
#yellow {
display: none;
-ms-filter: "progid:DXImageTransform.Microsoft.Light()";
filter: progid:DXImageTransform.Microsoft.Light();
left: 0;
position: absolute;
top: 0;
}
/* NOTE: you'll need to use script for hovering support on IE6 */
#image:hover #yellow {
display: block;
}
</style>
<script type="text/javascript">
window.onload = function() {
document.getElementById('yellow').filters.item("DXImageTransform.Microsoft.Light").addAmbient(255, 255, 0, 100);
}
</script>
</head>
<body>
<div id="image">
<img src="http://stylonica.com/wp-content/uploads/2014/03/Puppy-3-dogs-1993798-1024-76811.jpg" alt="">
<div id="yellow">
<div id="grayscale">
<img src="http://stylonica.com/wp-content/uploads/2014/03/Puppy-3-dogs-1993798-1024-76811.jpg" alt="">
</div>
</div>
</div>
</body>
</html>
하지만, 고마워요! 업데이트 버전은 완벽한 감사입니다 – cstr44
문제 없습니다. 재미있는 실험이었고 약간의 것을 배울 수있는 기회였습니다.SVG와 IE 필터 솔루션을 결합하여 가장 넓은 호환성을 제공하는 단일 솔루션으로 흥미로운 일이 될 것입니다. 데모를하지 않은 또 다른 가능한 해결책은 캔버스를 사용하는 것이었지만 그것을 버려두는 것이 옳다고 생각합니다. 캔버스는 유동적 인 레이아웃을 어렵게 만들고 Internet Explorer 8에서는 지원되지 않습니다 (문제가있는 경우). 조심해. – ifugu
그래, 나는 캔버스를 사용하는 방법을 살펴 봤지만 내가 필요로하는 것 이상으로 복잡한 것 같았다. 바라건대 css3 블렌드 모드는 브라우저에서 구현 될 때 더 빠른 대안을 제공합니다! – cstr44