gpt4 book ai didi

javascript - SVG:悬停时将填充颜色应用于 "masked"图像

转载 作者:行者123 更新时间:2023-12-01 02:22:05 25 4
gpt4 key购买 nike

我正在使用 clipPath 对图像应用不同的“ mask ”效果。

如何在悬停时用颜色填充剪切的图像?我尝试过在 CSS 中使用 :hover,但这似乎不起作用,除非我瞄准了错误的元素。

我在这个元素中使用 jQuery,因此如果需要 JS 解决方案,我可以依靠 jQuery。

这是我正在使用的 HTML:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100">
<defs>
<clipPath id="ellipse">
<ellipse cx="50" cy="35.5" rx="49.5" ry="35" />
</clipPath>
<clipPath id="hexagon">
<polygon points="25, 0 75, 0 100, 43.30127018922193 75, 86.60254037844386 25, 86.60254037844386 0, 43.30127018922193"/>
</clipPath>
<clipPath id="rectangle">
<rect x="0" y="0" width="100" height="70"></rect>
</clipPath>
</defs>
<g>
<image preserveAspectRatio="none" x="0" y="0" width="100%" height="100%" xlink:href="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Bucephala-albeola-010.jpg/800px-Bucephala-albeola-010.jpg" id="clippy" clip-path="url(#hexagon)">
</g>
</svg>

最佳答案

您可能想要使用滤镜效果在悬停时为图像提供一些颜色 ( see Tinkerbin ):

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100">
<style type="text/css">
image:hover {
filter:url(#Matrix);
}
</style>
<defs>
<clipPath id="ellipse">
<ellipse cx="50" cy="35.5" rx="49.5" ry="35" />
</clipPath>
<clipPath id="hexagon">
<polygon points="25, 0 75, 0 100, 43.30127018922193 75, 86.60254037844386 25, 86.60254037844386 0, 43.30127018922193"/>
</clipPath>
<clipPath id="rectangle">
<rect x="0" y="0" width="100" height="70"></rect>
</clipPath>
<filter id="Matrix" filterUnits="objectBoundingBox"
x="0%" y="0%" width="100%" height="100%">
<feColorMatrix type="matrix" in="SourceGraphic"
values="1 0 0 0 .5
.1 .9 0 0 0
.1 0 .9 0 0
0 0 0 1 0"/>
</filter>
</defs>
<g>
<image preserveAspectRatio="none" x="0" y="0" width="100%" height="100%" xlink:href="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Bucephala-albeola-010.jpg/800px-Bucephala-albeola-010.jpg" id="clippy" clip-path="url(#hexagon)">
</g>
</svg>

编辑:有关过滤器的一些说明:

应用的滤镜会更改每个光栅像素的颜色。它采用其原始颜色值,应用 <feColorMatrix> 指定的矩阵到颜色向量,结果颜色向量成为显示的颜色。

矩阵如何工作?

矩阵由四行组成。第一行计算新的红色分量,第二行计算绿色分量,第三行计算蓝色分量,第四行计算 alpha。

每行五个数字的含义是什么?第一个数字乘以原始颜色的红色分量,第二个数字乘以绿色分量,第三个数字乘以蓝色,第四个数字乘以 Alpha。所有四个乘积都被求和,并且行中的第五个值也被添加(作为不依赖于任何原始颜色分量的常量)。

让我们看一下上面的示例:假设我们有一个颜色值如下的灰色像素

rgba(25%,25%,25%,1)

最终的红色值是多少?计算红色值的第一行是

1 0 0 0 .5

我们计算如下:

  1*r   + 0*g   + 0*b   + 0*a + .5
= 1*.25 + 0*.25 + 0*.25 + 0*1 + .5 = .75

这意味着,像素的最终红色分量为 75%。其他部分依此类推计算。

关于javascript - SVG:悬停时将填充颜色应用于 "masked"图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com