【发布时间】:2021-12-17 07:34:06
【问题描述】:
如何“裁剪” svg 过滤器以适应父级的形状?
现在我有一个 div 作为一个圆圈,里面有一个 svg。但是 svg 过滤器会创建一个矩形。
编辑:我尝试按照下面的建议实现一个带有border-radius:100% 的包装div,但随后它消除了模糊。
updated codepen with wrapping div
svg{
width:100%;
height: 100%;
}
.custom-cursor {
border-radius: 50%;
overflow: hidden;
width: 20px;
height: 20px;
background-image: conic-gradient( cyan, magenta, yellow, cyan);
filter: blur(5px) url("#blur-plus-grain");
}
<div class="custom-cursor">
<svg preserveAspectRatio="none">
<filter id="blur-plus-grain">
<feGaussianBlur stdDeviation="0.8" result="blur" />
<feTurbulence type="fractalNoise" numOctaves="26" baseFrequency="40" stitchTiles="stitch" result="grain" />
<feComposite operator="in" in="blur" in2="grain" />
</filter>
<circle fill="transparent" r="10" cx="50%" cy="50%" filter="url(#blur-plus-grain)" />
</svg>
</div>
【问题讨论】:
-
您好,我查看了您的代码笔并将 div 尺寸设置为 200px,看看发生了什么更好。整个事情是圆形的。然后我删除了似乎没有任何区别的 SVG。你能描述更多问题是什么吗?可能是在 20 像素的尺寸下,您会获得边缘效果 - 没有多少像素可以使物体看起来很圆。
标签: css svg svg-filters