İlginç bir konu, çünkü AFAIK şu anda Firefox, SVG'deki animasyonu desteklemiyor.
Bu yüzden biraz araştırma yaptım ve bir çalışma çözümü buldum. Adobe plug-in, Opera 10.51, Safari 4.0.5, Chrome 5.0 ile Firefox 3.6, IE7'de test edilmiştir.
SVG alanının arka planı IE7, Safari ve Chrome'da saydamlığa sahip değil ... nesnesini etiketiyle deneyebilirim (IE tarafından desteklenmeyen, muhtemelen bazı koşullu HTML'ye gereksinim duyuyor ...).
[DÜZENLEME] Tamam, iyi, Adobe SVG eklentisi tarafından desteklenmemektedir daha standart nesneyi ( HTML ... tanımlanmıştır hiç gömmek) IE dışındaki kullanmak değişti. İkincisi, gömülmüş nesnesinin saydamlığına sahip olması için bir öznitelik eklemesine izin verir. Webkit tabanlı tarayıcılar için saydamlık yok: bkz. object embedded in HTML: default background should be transparent hata.
HTML kodu:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Animating SVG</title>
</head>
<body bgcolor="#CCAAFF" onload="RotateSVG()">
<!--[if !IE]> -->
<object id="gear" data="gear.svg" type="image/svg+xml"
width="500" height="500"
style="position: absolute; top: -250px; left: -250px;">
<!--<![endif]-->
<embed id="gear" src="gear.svg" type="image/svg+xml"
width="500" height="500" wmode="transparent"
style="position: absolute; top: -250px; left: -250px;"/>
<!--[if !IE]> -->
</object>
<!--<![endif]-->
<div onclick="RotateSVG()"
style="position: absolute; top: 250px; background-color: #ACF;">Start/Stop</p>
<script type="text/javascript">
var animator;
var angle = 0;
function RotateSVG()
{
if (animator != null)
{
// Just stop
clearInterval(animator);
animator = null;
return;
}
var svgTag = document.getElementById("gear");
var svgDoc = null;
try
{
// Most modern browsers understand this
svgDoc = svgTag.getSVGDocument();
}
catch (ex) {} // Ignore error
if (svgDoc == undefined)
{
svgDoc = svgTag.contentDocument; // For old Mozilla?
if (svgDoc == undefined)
{
alert("Cannot get SVG document");
return;
}
}
var gear = svgDoc.getElementById("gearG");
if (gear == null)
{
alert("Cannot find gearG group");
return;
}
animator = setInterval(
function()
{
angle += 5;
gear.setAttribute("transform", "rotate(" + angle + " 250 250)");
}, 100);
}
</script>
</body>
</html>
kullandığım SVG kodu (sadece kimlik önemlidir, SVG Mozilla SVG Project dan):
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
baseProfile="full">
<!-- http://www.mozilla.org/projects/svg/ -->
<g id="gearG" fill-opacity="0.7" stroke="black" stroke-width="0.1cm">
<circle cx="6cm" cy="2cm" r="100" fill="red"
transform="translate(0,50)" />
<circle cx="6cm" cy="2cm" r="100" fill="blue"
transform="translate(70,150)" />
<circle cx="6cm" cy="2cm" r="100" fill="green"
transform="translate(-70,150)" />
</g>
</svg>
İyi, tam cevap, benden daha hızlıydı ! :-) FF3 şimdi Smil animasyonunu destekliyor mu? Henüz denemedim. – PhiLho
Firefox 3.7 alpha I, en azından parçalarını desteklemektedir: http://blog.dholbert.org/2009/10/smil-enabled-by-default-on-nightly.html. Http://dev.w3.org/SVG/profiles/1.1F2/test/harness/, w3c svg testsuite karşı kendinizi test etmek için çekinmeyin –