Javascript 如何在owl转盘中重置SVG动画
我有svg动画,像这样制作Javascript 如何在owl转盘中重置SVG动画,javascript,html,svg,owl-carousel,owl-carousel-2,Javascript,Html,Svg,Owl Carousel,Owl Carousel 2,我有svg动画,像这样制作 <svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='16' height='16' viewbox='0 0 250 250' enable-background='new 0 0 426.667 410' xml:space='preserve'><path
<svg version='1.1' xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='16'
height='16' viewbox='0 0 250 250' enable-background='new 0 0 426.667 410'
xml:space='preserve'><path class='loader' transform='translate(125, 125)
scale(.84)'/>
</svg>
和css
svg {
position: absolute;
top: 0;
border: 3px solid pink;
border-radius: 50px;
}
svg path {display: none;}
.owl-dot.active svg path {display: block;}
css主要用于设置类活动时显示swg。它在旋转木马中,所以我只需要为每张幻灯片显示一个动画。但问题是,所有svg都同时设置动画。每次旋转木马更改幻灯片时,我都需要重置这些动画。对于转盘,使用Owl转盘,代码简单:
$("#our-work-carousel2").owlCarousel({
loop: true,
lazyLoad: true,
autoplay: true,
animateIn: 'fadeIn',
animateOut: 'fadeOut',
slideSpeed: 300,
paginationSpeed: 400,
dotData: true,
dotsData: true,
itemsDesktop: false,
itemsDesktopSmall: false,
itemsTablet: true,
itemsMobile: false,
onChange:callback,
});
function callback(event){
}
我可能需要回调中的一些代码来重置svg动画,但我想不出这个解决方案。感谢所有人的建议。动画状态根据变量
a
更新,在动画的每个步骤中,变量增加一,直到达到360,然后返回到0
要重置动画,需要重置变量a
设置值0
var loader=document.getElementsByClassName(“加载器”)
,a=0
,p=Math.PI
t=9;
(函数图(){
a++;
a%=360;
风险值r=(a*p/180)
,x=数学sin(r)*125
,y=数学cos(r)*-125
,mid=(a>180)?1:0
,anim=“M 0 0 v-125 A 125 1”
+mid+“1”
+x+“”
+y+“z”;
Object.values(loader.forEach)(item=>item.setAttribute(“d”,anim));
console.log('a:',a);
setTimeout(draw,t);//重新绘制
}());
document.getElementById('reset-loader')。addEventListener('click',()=>a=0)代码>
svg{
边框:3倍纯红;
边界半径:50px;
}
重置
你太棒了。非常感谢你!
$("#our-work-carousel2").owlCarousel({
loop: true,
lazyLoad: true,
autoplay: true,
animateIn: 'fadeIn',
animateOut: 'fadeOut',
slideSpeed: 300,
paginationSpeed: 400,
dotData: true,
dotsData: true,
itemsDesktop: false,
itemsDesktopSmall: false,
itemsTablet: true,
itemsMobile: false,
onChange:callback,
});
function callback(event){
}