ctr*_*del 2 javascript css jquery svg
我正在使用clipPath对图像应用不同的"蒙版"效果.
如何在悬停时用彩色填充剪裁的图像?我尝试:hover在CSS中使用,但这似乎不起作用,除非我的目标是不正确的元素.
我在这个项目中使用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>
Run Code Online (Sandbox Code Playgroud)
您可能希望使用滤镜效果在悬停时为图像提供一些颜色(请参阅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>
Run Code Online (Sandbox Code Playgroud)
编辑:有关过滤器的一些说明:
应用的滤镜会更改每个光栅像素的颜色.它采用其原始颜色值,将指定的矩阵应用于<feColorMatrix>颜色矢量,并且生成的颜色矢量成为显示的颜色.
矩阵如何工作?
矩阵由四行组成.第一行计算新的红色成分,第二行计算绿色,红色第三,第四行.
每行五个数字的含义是什么?第一个数字乘以原始颜色的红色分量,第二个数字乘以绿色,第三个蓝色,第四个alpha.总结了所有四个产品,并且还添加了行中的第五个值(作为不依赖于任何原始颜色分量的常量).
让我们看一下上面的例子:让我们假设我们有一个颜色值为灰色的像素
rgba(25%,25%,25%,1)
Run Code Online (Sandbox Code Playgroud)
产生的红色值会是什么?计算红色值的第一行是
1 0 0 0 .5
Run Code Online (Sandbox Code Playgroud)
我们计算如下:
1*r + 0*g + 0*b + 0*a + .5
= 1*.25 + 0*.25 + 0*.25 + 0*1 + .5 = .75
Run Code Online (Sandbox Code Playgroud)
这意味着,像素的最终红色分量为75%.其他组件类似地计算.
| 归档时间: |
|
| 查看次数: |
1136 次 |
| 最近记录: |