Имам референтно изображение на ефекта, който се опитвам да постигна с помощта на SVG.
Във Photoshop ефектът може да се постигне чрез използване на 100% непрозрачност с режим на смесване, зададен на „умножение“
Цветовете имат шестнадесетични стойности от:
червено: #EA312F, синьо: #3A5BA6 и припокриваща се област: #35111F
Опитах няколко подхода, използвайки SVG филтри, за да постигна подобен ефект, но се боря да разбера как режимите на смесване изчисляват стойностите.
- Оригинално растерно изображение на Photoshop
- SVG използва само форми без филтри
- SVG с помощта на филтър за умножение на вертикална лента
- SVG с помощта на филтър за умножение и непрозрачност на вертикалната лента
Можете да видите SVG кода за всяко от тях в http://jsbin.com/iPePuvoD/1/edit
Наистина се боря да разбера най-добрия подход за съпоставяне на синьото на вертикалната лента и цвета на припокриващата се област.
Всяка от тези форми също бих искал да анимирам с помощта на библиотека като http://snapsvg.io/, така че Надявам се да разчитам само на филтри, а не на изрязване или други операции, за да постигна желаните резултати, но съм отворен за предложения.
Ефективно SVG за последния опит (4.) е следният:
<svg viewBox="0 0 96 146" version="1.1" id="f-multiply-opacity" preserveAspectRatio="xMinYMin meet">
<defs>
<filter id="f_multiply" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
<feBlend in="SourceGraphic" mode="multiply"/>
<feBlend in="SourceGraphic" mode="multiply"/>
</filter>
</defs>
<g id="f_shape">
<rect x="0" y="0" width="96" height="32" fill="#EA312F" />
<rect x="0" y="50" width="96" height="32" fill="#EA312F" />
<rect x="0" y="50" width="32" height="96" opacity="0.8" fill="#3A5BA6" filter="url(#f_multiply)" />
</g>
</svg>
Ще бъда много благодарен за съвет относно това, намерих някои добри ресурси за SVG, но тази област все още изглежда доста трудна за получаване на добра информация.
Благодаря!