鉴于以下代码:
<body style="background:black;margin:0px" onmousemove="house(event)">
<defs>
<filter id="f1" x="0" y="0" width="105%" height="105%">
<feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
<feBlend in="SourceGraphic" in2="offOut" mode="normal" />
</filter>
</defs>
<circle r="25" id="circle" fill="yellow" filter="url(#f1)"></circle>
</svg>
<script>
function house(e)
{
var h=e.clientX;
var k=e.clientY;
var ball=document.getElementById("circle");
var r=ball.getAttribute("r");
ball.setAttribute("cx",h);
ball.setAttribute("cy",k);
}
</script>
答案 0 :(得分:0)
过滤器元素的x和y属性以及宽度和高度描述了“过滤器区域”,即过滤器元素(或用户空间)中可见过滤器结果的区域。有关更多信息,请参阅filter element的网络平台文档:
是的,您可以通过JavaScript改变这些,尽管想要这样做有点不寻常。你总是可以通过getElementById(“f1”)来获取filter元素并设置x和y。
从您的示例代码中您有点不清楚您要完成的任务。
答案 1 :(得分:0)
x和y是过滤器的渲染内容的原点。 如果应用滤镜来制作形状阴影,在某些情况下,模糊会在形状内容之外展开,在某些情况下,x和y必须为负,才能完全显示滤镜生成的阴影模糊。
此代码显示使用janvas(janvas.com)创建的阴影过滤器 如果你用janvas绘制一个圆并发布svg,你会看到这个svg代码进入“def”标签,x和y值为-20%
<filter id="_0_" x="-20%" y="-20%" width="200%" height="200%" type="Shadow" shadowoffsetx="5" shadowoffsety="5" shadowblur="5" shadowcolor="rgba(0,0,0,.5)">
<feOffset result="offOut" in="SourceGraphic" dx="5" dy="5">
</feOffset>
<feColorMatrix result="matrixOut" in="offOut" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0">
</feColorMatrix>
<feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="2">
</feGaussianBlur>
<feBlend in="SourceGraphic" in2="blurOut" mode="normal">
</feBlend>
</filter>