我为网站制作了非常简单的旋转动画,它们在Chrome / Firefox中看起来很棒,但出于某种原因,他们在Safari中反向制作动画。我已经玩过改变偏移量的值,但似乎没有任何效果。有没有针对此的解决方法?
.sq {
width: 50vw;
height: auto;
padding: 2.2vw;
}
.path {
stroke-dasharray: 250;
stroke-dashoffset: 250;
animation: line 3s ease forwards;
}
@keyframes line {
from {
stroke-dashoffset: -250;
}
to {
stroke-dashoffset: 0;
}
}

<div class="sq">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 81.32 81.32">
<defs>
<style>
.cls-1{fill:#202020;opacity:0.1;}
.path{fill:none;stroke:#ef3f44;stroke-miterlimit:10;stroke-width:5px;}
</style>
</defs>
<g id="94" data-name="94">
<g id="Objects">
<circle cx="40.66" cy="40.66" r="27.17" class="cls-1"/>
<path d="M40.66 79.15a38.49 38.49 0 1 1 38.49-38.49 38.53 38.53 0 0 1-38.49 38.49zm0-76.07a37.58 37.58 0 1 0 37.58 37.58A37.63 37.63 0 0 0 40.66 3.08z" class="cls-1"/>
<path d="M26.83 5.1a38.16 38.16 0 1 0 13.83-2.6" class="path"/>
</g>
</g>
</svg>
</div>
&#13;
也可以随意在Codepen上查看:
答案 0 :(得分:2)
为了不使用stroke-dashoffset
的负值,可以使用stroke-dashoffset: 500;
的正值的两倍
代替负值
@keyframes line {
from {
stroke-dashoffset: -250;
}
to {
stroke-dashoffset: 0;
}
}
使用双正值:
@keyframes line {
from {
stroke-dashoffset: 250;
}
to {
stroke-dashoffset: 500;
}
}
.sq {
width: 50vw;
height: auto;
padding: 2.2vw;
}
.path {
stroke-dasharray: 250;
stroke-dashoffset: 250;
animation: line 3s ease forwards;
}
@keyframes line {
from {
stroke-dashoffset: 250;
}
to {
stroke-dashoffset: 500;
}
}
<div class="sq">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 81.32 81.32">
<defs>
<style>
.cls-1{fill:#202020;opacity:0.1;}
.path{fill:none;stroke:#ef3f44;stroke-miterlimit:10;stroke-width:5px;}
</style>
</defs>
<g id="94" data-name="94">
<g id="Objects">
<circle cx="40.66" cy="40.66" r="27.17" class="cls-1"/>
<path d="M40.66 79.15a38.49 38.49 0 1 1 38.49-38.49 38.53 38.53 0 0 1-38.49 38.49zm0-76.07a37.58 37.58 0 1 0 37.58 37.58A37.63 37.63 0 0 0 40.66 3.08z" class="cls-1"/>
<path d="M26.83 5.1a38.16 38.16 0 1 0 13.83-2.6" class="path"/>
</g>
</g>
</svg>
</div>
答案 1 :(得分:0)
Safari不支持负的dashoffsets。你需要通过扭转你的路径并让dashoffset以另一种方式设置动画来解决这个问题。
答案 2 :(得分:0)
对于svg圈子也存在相同的问题。我希望动画逆时针旋转。最终通过水平翻转圆并使用正破折号偏移量来解决它。
我使用了一种变换来翻转圆圈。
scale(-1 1)
有关示例,请参见codepen。