【发布时间】:2021-10-20 15:03:01
【问题描述】:
我想应用带有过渡效果的 SVG 滤镜。我希望它在鼠标放在它上面时应用,并在鼠标离开它时丢弃。我试过这段代码,但没有用。我该怎么做?
var rect = document.querySelector("rect")
var use = document.querySelector("#fs")
rect.addEventListener("mouseover", () => {
rect.setAttribute("filter","url(#filter)")
use.setAttribute("href","startA")
})
rect.addEventListener("mouseleave", () => {
rect.setAttribute("filter","")
use.setAttribute("href","stopA")
})
<svg width="400" height="400">
<defs>
<animate id="startA" attributeName="stdDeviation" values="0;10" dur="1s"></animate>
<animate id="stopA" attributeName="stdDeviation" values="10;0" dur="1s"></animate>
</defs>
<filter id="filter">
<feGaussianBlur in="SourceGraphic" stdDeviation="10">
<use id="fs"/>
</feGaussianBlur>
<feMerge>
<feMergeNode/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<rect x="50" y="50" width="180" height="180" fill="#4a8"></rect>
</svg>
【问题讨论】:
标签: javascript svg filter svg-animate