svg - SVG组的不透明度/半透明度可以一起调整吗?

标签 svg transparency

我有一个包含多个组件的 SVG“g”对象。我想使整个事物部分透明(例如 alpha = 0.5),如果可能的话,我也想变得更暗。我知道可以调整单独的填充颜色,但如何将所有填充颜色一起调整,可能在“g”(分组)结构的某些参数中。

最佳答案

改变 opacity<g> (通过 opacity="..." 属性,或 opacity CSS 规则)将导致首先合成组的内容,然后降低结果的不透明度。请注意,这与降低组内所有元素的不透明度明显不同(您也可以通过 CSS 执行此操作):

演示:http://jsfiddle.net/HZr7v/12/

enter image description here

使用这个 SVG:

<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400">
    <defs><filter id="Darker">
      <feColorMatrix type="matrix" values="
       0.3  0   0   0   0
        0  0.3  0   0   0
        0   0  0.3  0   0
        0   0   0  0.8  0"/>
    </filter></defs>
    <g id="g1" transform="translate(60,60)"> <!-- top left -->
        <circle r="40" /><rect width="80" height="60" />
    </g>
    <g id="g2" transform="translate(220,60)"><!-- top right -->
        <circle r="40" /><rect width="80" height="60" />
    </g>
    <g id="g3" transform="translate(60,200)"><!-- bottom left -->
        <circle r="40" /><rect width="80" height="60" />
    </g>
    <g id="g4" transform="translate(220,200)"><!-- bottom right -->
        <circle r="40" /><rect width="80" height="60" />
    </g>
</svg>

...使用这个 CSS:

circle { fill:red }
rect { fill:blue }

#g2 * { opacity:0.5 }         /* Change the opacity of each shape    */
#g3   { opacity:0.5 }         /* Change the opacity of the group     */
#g4   { filter:url(#Darker) } /* Darkens and drops opacity for group */

请特别注意圆形和方形重叠处的外观差异。

feColorMatrix过滤器看起来令人生畏。它所做的只是将 RGB 值分别设置为原始 RGB 的 30%(即更暗),并将 alpha 设置为原始 alpha 的 80%。根据需要更改值。


哦,如果你想去饱和,你也可以把它扔进过滤器(在变暗步骤之前或之后):

<feColorMatrix type="saturate" values="0.5"/>
<!-- values="0"  will drop all color, leaving grayscale only -->
<!-- values="1"  will leave the current saturation color     -->
<!-- values="99" will super-saturate the colors              -->

关于svg - SVG组的不透明度/半透明度可以一起调整吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15825758/

相关文章:

javascript - 更改 :before or :after CSS 中的 SVG 填充颜色

android - 如何从 UnityPlayerActivity 打开透明 Activity ?

Java检查图像是否具有透明度

css - 如何制作没有透明度重叠的倾斜CSS背景?

css - 如何找到 png 图像中像素的 alpha channel 透明度值?

java - LWJGL png纹理透明度(textureColour.a白色而不是黑色)

javascript - 旋转动画悬停但在悬停时移动鼠标 ->取消

javascript - jVectorMap 以错误的大小渲染,并且似乎没有办法更改它

html - 删除 Wordpress 中特色 svg img 的默认大小属性

javascript - 使用 RaphaelJS 确定图像何时加载到 svg 中