我想在SVG中製作此圖形。我可以使用<animate>
標記,我可以使用JavaScript處理SVG文檔。如果可能,我寧願在SVG中完成所有工作。帶有SVG標誌的動畫半圓
回答
這裏有一個簡單的例子:
<svg height="200" width="200" viewBox="0 0 144 144">
<circle cx="72" cy="72" r="49" stroke-width="6" stroke="#F68524" fill="none"/>
<circle cx="72" cy="72" r="49"
stroke-width="6" stroke="#838588" fill="none">
<animate attributeName="stroke-dasharray" values="154 0;0 154" dur="1s" repeatCount="indefinite"/>
</circle>
</svg>
要用於stroke-dasharray
正確的值是基於圓的周長,2 * π * r
,我們希望將其中的一半除以2.在計算大致爲154的示例中。
請參閱jsfiddle。
更新: 相當接近,但不完全相同,如上所述。這裏有一個版本,也是動畫的顏色:
<svg height="200" width="200" viewBox="0 0 144 144">
<circle cx="72" cy="72" r="49" stroke-width="6" stroke="#F68524" fill="none">
<animate attributeName="stroke" values="#838588;#F68524"
dur="2s" calcMode="discrete" repeatCount="indefinite"/>
</circle>
<circle cx="72" cy="72" r="49"
stroke-width="6" stroke="#838588" fill="none">
<animate attributeName="stroke-dasharray" values="154 0;0 154"
dur="1s" repeatCount="indefinite"/>
<animate attributeName="stroke" values="#F68524;#838588"
dur="2s" calcMode="discrete" repeatCount="indefinite"/>
</circle>
</svg>
見jsfiddle。
哇,真是太棒了,我不明白它在做什麼,這些值代表什麼?請注意,你的例子不是很好,當它循環時不應該有閃光,它應該平滑地開始傳播灰色而不是橙色。 –
這僅僅是一個起點的想法。然後,您可以應用蒙版來隱藏和顯示圖形的某些部分。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
<circle cx="200" cy="200" r="100" fill="gray"/>
<rect x="100" y="200" height="101" width="201" fill="white">
<animateTransform attributeName="transform"
attributeType="XML"
type="rotate"
from="0 200 200"
to="360 200 200"
dur="5s"
repeatCount="indefinite"/>
</rect>
<circle cx="200" cy="200" r="90" fill="white"/>
</svg>
非常感謝@helderdarocha指出我在正確的方向。
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="144px" height="144px" viewBox="0 0 144 144" enable-background="new 0 0 144 144">
<defs>
<clipPath id="rotation-top" clip-path="url(#top-half)">
<rect x="0" y="72" height="72" width="144">
<animateTransform attributeName="transform"
attributeType="XML"
type="rotate"
from="360 72 72"
to="0 72 72"
dur="3s"
repeatCount="indefinite">
</animateTransform>
</rect>
</clipPath>
<clipPath id="rotation-bottom" clip-path="url(#bottom-half)">
<rect x="0" y="0" height="72" width="144">
<animateTransform attributeName="transform"
attributeType="XML"
type="rotate"
from="360 72 72"
to="0 72 72"
dur="3s"
repeatCount="indefinite">
</animateTransform>
</rect>
</clipPath>
<clipPath id="top-half">
<rect x="0" y="0" height="72" width="144">
</rect>
</clipPath>
<clipPath id="bottom-half">
<rect x="0" y="72" height="72" width="144">
</rect>
</clipPath>
</defs>
<!-- background white -->
<circle opacity="0.56" fill="#FFFFFF" cx="72" cy="72" r="72"/>
<!-- back gray color -->
<circle cx="72" cy="72" r="49" stroke-width="6" stroke="#838588" fill-opacity="0.0"/>
<!-- foreground orange color -->
<circle
cx="72" cy="72" r="49"
stroke-width="6" stroke="#F68524" fill-opacity="0.0"
clip-path="url(#rotation-bottom)"
/>
<circle
cx="72" cy="72" r="49"
stroke-width="6" stroke="#F68524" fill-opacity="0.0"
clip-path="url(#rotation-top)"
/>
</svg>
哇。看起來很棒!將您的答案標記爲正確的答案。 – helderdarocha
我再也不能兩天了:( –
對於跨瀏覽器動畫,最好使用Javascript。 (IE不支持SMIL)。在所有瀏覽器中,setInterval都相當健壯。
例如,不間斷的旋轉的元素,你可以使用:
function basicRotate()
{
var FPS=100 //----frames per second---
var angle = 0//---starting value---
function frame()
{
angle++
myElement.setAttribute("transform","rotate("+angle+" "+centetX+" "+centerY+")")
if (angle == 360)
angle=0
}
//---start interval timer---
var iT = setInterval(frame, 1000/FPS) //---draw every 10ms ---
}
- 1. SVG繪製動畫的半圓不虛
- 2. jQuery slideToggle帶標誌動畫
- 3. 使用CSS動畫調整SVG圓半徑的大小
- 4. 畫兩個半圓
- 5. 帶動畫標籤的SVG圖形不是動畫
- 6. 帶起始圓的SVG進度條動畫
- 7. 的Android動畫圓角半徑
- 8. 用CABasicAnimation正確動畫圓弧半徑
- 9. SVG - 將一個圓沿動畫直線
- 10. 動畫SVG圓圈背景圖片
- 11. 使用dashoffset控制SVG圓形動畫
- 12. 畫一個半圓UISlider
- 13. 帶有褪色標誌的Qt SplashScreen未運行動畫
- 14. 帶圓邊的XAML按鈕,邊上有完美的半圓
- 15. 半圓圓弧滾動javascript
- 16. 只有在圓圈上可見的動畫欄 - svg
- 17. CSS3標誌動畫?
- 18. 帶CSS的動畫線條圖(SVG)
- 19. 使用動作腳本如何使用動作腳本如何畫一個半圓畫一個半圓
- 20. 帶圓點的動畫線圖
- 21. Animate SVG標誌
- 22. 使用帶有SVG的HTML5畫布
- 23. CSS3縮放動畫帶邊框半徑
- 24. 三角形svg,其側面有一個透明的半圓
- 25. 用CSS畫出圓圈的半徑線
- 26. 帶邊框半徑的多線圓角
- 27. 帶有半透明背景的高動畫fps
- 28. 帶有CUDA和OpenGL的動畫點半徑
- 29. SVG分段圓環圖內部圓半徑
- 30. SVG動畫沒有方法
你有多遠? –
研究看起來像我將不得不通過手動畫路徑數據中的弧線... http://jbkflex.wordpress.com/2011/07/28/creating-a-svg-pie-chart-html5/ –
I不這麼認爲,你應該可以爲此使用SMIL。動畫弧路徑的stroke-dasharray屬性。 –