我工作的一些动画SVGs与悬停触发CSS动画。 我能够有悬停的SVG动画我想我们对Chrome的方式,但我现在面临一个Firefox和Safari的问题。
显然, pointer-events
属性应用于组<g></g>
在此浏览器不给相同的行为比其他现代的,试图将值设置为至少在bounding-box
。
我正在做
g {
pointer-events: bounding-box;
}
但是当实际悬停仅被触发<path>
元件悬停,而不是整个组<g>
如我需要。
我可以用不说这事,它提到svgs也有此特性的支持。
下面有一个示例代码,你怎么看我的SVGs的一个模样。 上铬盘旋主要含组区域将触发悬停动画,Firefox上需要以这样的事情发生被盘旋的实际路径(在这种情况下,图标线)。
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<style>
g {
pointer-events: bounding-box;
//not working on FF
}
#mobile:hover .flip {
transform-origin:55% 50%;
-moz-transform-origin:55% 50%;
animation: flip_left 1.6s forwards;
}
@keyframes flip_left {
0% {transform: perspective(2000px) rotateY(90deg) skewY(-1deg)}
30% {transform:perspective(2000px) rotateY(-25deg) skewY(-0.8deg)}
50% {transform:perspective(2000px) rotateY(20deg) skewY(0.8deg)}
70% {transform:perspective(2000px) rotateY(-10deg) skewY(-0.8deg)}
100% {transform:perspective(2000px) rotateY(0deg)}
}
</style>
<!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
<title>Mobile solutions</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="mobile" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="MS_HP_Usecase_Based_Page-Desktop-2A" transform="translate(-766.000000, -418.000000)" stroke="#00A0DF" stroke-width="1.25">
<g id="Asset-5" transform="translate(766.000000, 418.000000)">
<g class="flip">
<rect id="Rectangle-path" stroke-linecap="round" stroke-linejoin="round" x="12.35" y="7.41" width="15.32" height="25.33" rx="2.03"></rect>
<circle id="Oval" stroke-linecap="round" stroke-linejoin="round" cx="20.01" cy="28.72" r="1.58"></circle>
<path d="M18.43,10.72 L21.48,10.72" id="Shape" stroke-linecap="round" stroke-linejoin="round"></path>
</g>
<circle id="Oval" cx="19.67" cy="19.67" r="19.04"></circle>
</g>
</g>
</g>
</svg>
我想找到一种解决方法,因为我想使这个动画作品的跨浏览器。 我希望最终使它成为IE11工作,锋芒太。
谢谢,