ddi*_*ver 32 xml svg adobe-illustrator svg-filters
我正在尝试创建一个徽标作为SVG.我从Illustrator导出文件.徽标上有一个投影.我正在查看XML,我找到了过滤器节点
<filter filterUnits="objectBoundingBox" width="200%" height="160%" x="-15%" y="-15%" id="AI_Shadow_2">
<feGaussianBlur stdDeviation="2" result="blur" in="SourceAlpha"></feGaussianBlur>
<feOffset result="offsetBlurredAlpha" in="blur" dy="0" dx="0"></feOffset>
<feMerge>
<feMergeNode in="offsetBlurredAlpha"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
Run Code Online (Sandbox Code Playgroud)
有没有办法改变offsetBlurredAlpha生成的alpha?我不希望它以纯黑色开始我希望它以50%黑色开始,以便阴影效果在物体周围足够轻.
Eri*_*röm 51
一种方法是添加一个feComponentTransfer
过滤器原语,如下所示:
<filter id="dropshadow">
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
<feOffset dx="2" dy="2"/>
<feComponentTransfer>
<feFuncA type="linear" slope="0.2"/>
</feComponentTransfer>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
Run Code Online (Sandbox Code Playgroud)
这里可以看到一个实例.
一种方法是简单地使用opacity: 0.5
。为此,不要创建将阴影与原始源合并在顶部的过滤器,而只为该阴影创建过滤器,然后将其应用于<use>
引用源形状的标签。
这种方法还有其他优点。例如,现在您可以仅对阴影应用单独的样式。
#arrow-shadow {
opacity:0.5;
}
g:hover #arrow-shadow {
opacity:0.7;
}
Run Code Online (Sandbox Code Playgroud)
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-50 -50 200 200" width="400px">
<defs>
<filter id="dropshadow" height="130%">
<feGaussianBlur in="SourceAlpha" stdDeviation="3" />
<feOffset dx="2" dy="2" result="offsetblur" />
</filter>
</defs>
<g fill="#EEE">
<use id="arrow-shadow" xlink:href="#polygon" filter="url(#dropshadow)"></use>
<polygon id="polygon"
points="58.263,0.056 100,41.85 58.263,83.641 30.662,83.641 62.438,51.866 0,51.866 0,31.611 62.213,31.611 30.605,0 58.263,0.056"/>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
设置 alpha 值的另一种方法是使用feColorMatrix
过滤器基元。使用它您可以同时设置 alpha 值和阴影的颜色。
下面的滤镜将 alpha 值乘以0.2
,同时将阴影的颜色设置为红色。
<filter id="dropshadow">
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
<feOffset dx="2" dy="2"/>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0"/>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
Run Code Online (Sandbox Code Playgroud)
但如果您只需要更改 alpha 值,则feComponentTransfer
过滤器基元可能是更好的选择。
归档时间: |
|
查看次数: |
12392 次 |
最近记录: |