我正在尝试在我的网站上触发SVG中的旋转动画。它肯定可以工作,但问题是当我鼠标悬停在元素上移动时,它会取消动画。
所以我包含了一个对象SVG元素:
<object type="image/svg+xml" data="branching4.svg" id="branching">
Your browser does not support SVG
</object>
这是一个很长的SVG文档,但它附带了样式表:
#rectangle1, #rectangle2, #rectangle3{
perspective: 1500px;
}
#rectangle1.flip .card, #rectangle2.flip .card, #rectangle3.flip .card {
transform: rotateX(180deg);
}
#rectangle1 .card, #rectangle2 .card, #rectangle3 .card{
transform-style:preserve-3d;
transition:1s;
}
#rectangle1 .face, #rectangle2 .face, #rectangle3 .face{
backface-visibility: hidden;
}
#rectangle1 #front1{
transform: rotateX(0deg);
}
#rectangle1 #back1{
transform: rotateX( 180deg );
}
#rectangle2 #front2{
transform: rotateX(0deg);
}
#rectangle2 #back2{
transform: rotateX( 180deg );
}
#rectangle3 #front3{
transform: rotateX(0deg);
}
#rectangle3 #back3{
transform: rotateX( 180deg );
}
#rectangle1.flipped, #rectangle2.flipped, #rectangle3.flipped {
transform: rotateX( 180deg );
}
您可以在 jsfiddle 中查看 svg 结构。
最后是脚本:
window.onload=function() {
var svgDoc = $("#branching")[0].contentDocument; // Get the document object for the SVG
$(".st4", svgDoc).css("font-family", "robotolight,Helvetica Neue,Helvetica,Arial,sans-serif");
$("#rectangle1", svgDoc).hover(function(){
$(this, svgDoc).toggleClass("flip");
});
$("#rectangle2", svgDoc).hover(function(){
$(this, svgDoc).toggleClass("flip");
});
$("#rectangle3", svgDoc).hover(function(){
$(this, svgDoc).toggleClass("flip");
});
};
我还尝试了使用CSS,但出现了相同的问题。
这是一个JSFiddle:
https://jsfiddle.net/7f7wjvvt/
第一个问题:
如何在鼠标移动到元素上时实现流畅的旋转过渡效果?
第二个问题:
如何使Y轴旋转保持在原地而不向左平移? 在fiddle中尝试一下
第三个问题:
为什么JSFiddle在Firefox中显示SVG正常却在Chrome中不正常? 此外,透视在Chrome中似乎无法工作... 为什么?
有什么想法吗?
transitionend
监听CSS结束动画。以下是一些有用的文章链接:https://davidwalsh.name/css-animation-callback 和 https://developer.mozilla.org/en-US/docs/Web/Events/transitionend - GibboK