2015-08-14 150 views
1

我有一個簡單的SVG動畫。如何讓SVG在手機上運行?

HTML:

<svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52"><circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/><path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/></svg> 

CSS:

.checkmark__circle { 
    stroke-dasharray: 166; 
    stroke-dashoffset: 166; 
    stroke-width: 2; 
    stroke-miterlimit: 10; 
    stroke: #7ac142; 
    fill: none; 
    animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards; 
} 

.checkmark { 
    width: 56px; 
    height: 56px; 
    border-radius: 50%; 
    display: block; 
    stroke-width: 2; 
    stroke: #fff; 
    stroke-miterlimit: 10; 
    margin: 20px auto; 
    box-shadow: inset 0px 0px 0px #7ac142; 
    animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both; 
} 

.checkmark__check { 
    transform-origin: 50% 50%; 
    stroke-dasharray: 48; 
    stroke-dashoffset: 48; 
    animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards; 
} 

@keyframes stroke { 
    100% { 
    stroke-dashoffset: 0; 
    } 
} 
@keyframes scale { 
    0%, 100% { 
    transform: none; 
    } 
    50% { 
    transform: scale3d(1.1, 1.1, 1); 
    } 
} 
@keyframes fill { 
    100% { 
    box-shadow: inset 0px 0px 0px 30px #7ac142; 
    } 
} 

Fiddle

這個SVG的問題是,它只能在桌面瀏覽器。當我在移動設備(iOS8上的最新Chrome和Safari)和原生Android Lollipop瀏覽器上進行測試時,未顯示。

我已經嘗試添加<!DOCTYPE svg PUBLIC 「-//W3C//DTD SVG 1.1//EN」 「http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd」>但它仍然沒有工作。

我應該怎麼做才能使SVG在桌面和移動設備上都能正常工作?

+0

這並不甚至在桌面上工作,我(在Chrome或Opera) – Ian

+0

罰款工作Chrome在這裏(v 44.0.2403.155) –

回答

1

對於移動瀏覽器上的SVG,SVG SMIL動畫(又名<animate>元素)看起來比css動畫更像better supported,如下所示。

<animate xlink:href="#checkmark__check" 
     attributeName="stroke-dashoffset" 
     from="48" 
     to="0" 
     dur="3s" 
     fill="freeze"> 

示例代碼:https://jsfiddle.net/rvbssfmd/3/

下面是關於SMIL動畫CSS技巧教程:https://css-tricks.com/guide-svg-animations-smil/

+0

好吧,但爲什麼複選標記動畫較慢,圓形背景是黑色的(它的原始顏色是綠色的)? –

+0

Nvm,剛剛找到了改變持續時間和顏色的方法。 https://jsfiddle.net/rvbssfmd/5/ –

+0

這只是一個簡化的例子:) – toruta39

相關問題