【发布时间】:2013-12-27 21:40:52
【问题描述】:
我有一张我尝试使用 SVG 实现的效果的参考图片。
在 Photoshop 中,可以通过使用 100% 不透明度并将混合模式设置为“正片叠底”来实现效果
颜色的十六进制值为:
红色:#EA312F,蓝色:#3A5BA6,重叠区域:#35111F
我尝试了多种使用 SVG 滤镜的方法来实现类似的效果,但我很难理解混合模式如何计算值。
- 原始 Photoshop 位图
- SVG 仅使用形状而不使用过滤器
- SVG 在垂直条上使用乘法过滤器
- SVG 在垂直条上使用多重过滤器和不透明度
您可以在this JSBin http://jsbin.com/iPePuvoD/1/edit 中查看每一个的 SVG 代码
我真的很难理解匹配垂直条的蓝色和重叠区域的颜色的最佳方法。
我还想使用诸如http://snapsvg.io/ 之类的库为这些形状中的每一个设置动画,因此我希望纯粹依靠过滤器,而不是裁剪或其他操作来实现所需的结果 - 但我愿意建议。
实际上,最终尝试 (4.) 的 SVG 是这样的:
<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 上找到了一些很好的资源,但这个领域似乎仍然很难获得很好的信息。
谢谢!
【问题讨论】:
标签: svg colors vector-graphics blending svg-filters