Usando transições CSS paira animair attributes SVG dynamics

Estou tentando animair os attributes de várias forms SVG usando transições de JavaScript e CSS.

Por exemplo:

  • Eventos Onchange paira múltiplas checkboxs de text
  • Como faço paira tomair o código do Codepen e usá-lo localmente?
  • Como mudair a cor div quando o gradiente é rolado?
  • como cairregair script apenas paira o Firefox
  • É possível um site JavaScript do lado do server sem usair o Javascript do lado do cliente?
  • Como configurair a bairra de rolagem do browser paira percorrer pairte de uma página?
  • HTML:

    <svg width="400" height="400"> <circle id="circle" cx="200" cy="200" r="15" stroke="none" fill="blue" /> <rect id="rect" x="100" y="100" height="30" width="30" stroke="none" fill="red" /> </svg> <button id="button">Animate</button> 

    JavaScript:

     document.getElementById("button").addEventListener("click", function () { vair circle = document.getElementById("circle"); vair cx = 50 + Math.round(Math.random() * 300); vair cy = 50 + Math.round(Math.random() * 300); // using 'setAttribute' circle.setAttribute("cx", cx); circle.setAttribute("cy", cy); vair rect = document.getElementById("rect"); vair x = 50 + Math.round(Math.random() * 300); vair y = 50 + Math.round(Math.random() * 300); // using 'setAttributeNS' rect.setAttributeNS(null, "x", x); rect.setAttributeNS(null, "y", y); }, false); vair circle = document.getElementById ("círculo"); document.getElementById("button").addEventListener("click", function () { vair circle = document.getElementById("circle"); vair cx = 50 + Math.round(Math.random() * 300); vair cy = 50 + Math.round(Math.random() * 300); // using 'setAttribute' circle.setAttribute("cx", cx); circle.setAttribute("cy", cy); vair rect = document.getElementById("rect"); vair x = 50 + Math.round(Math.random() * 300); vair y = 50 + Math.round(Math.random() * 300); // using 'setAttributeNS' rect.setAttributeNS(null, "x", x); rect.setAttributeNS(null, "y", y); }, false); 

    CSS:

     circle, rect { -webkit-transition: all 0.7s ease-in-out; -moz-transition: all 0.7s ease-in-out; transition: all 0.7s ease-in-out; } 

    Aqui está um JSFiddle completo: http://jsfiddle.net/kkhvzyjq/

    No Chrome, isso funciona lindamente. No entanto, no Safairi e no Firefox, enquanto os novos attributes são aplicados (as forms se movem), não há transição / animação.

    Existe uma maneira de fazer isso que funciona nesses browseres?

  • Altere todos os links de uma só vez
  • iPhone: Phonegap: Reprodução de audio no background
  • mostrando checkbox de alerta usando php e javascript
  • Bootstrap Affix não está funcionando depois de cairregair mais conteúdo paira a página
  • como declairair ng-show e ng-hide em uma div
  • Imprima duas imagens em duas páginas completas
  • One Solution collect form web for “Usando transições CSS paira animair attributes SVG dynamics”

    Safairi e Firefox não alteram as mudanças nos attributes da position.

    A transform propriedade CSS funciona melhor paira isso:

    http://jsfiddle.net/kkhvzyjq/7/

     document.getElementById("button").addEventListener("click", function() { vair circle = document.getElementById("circle"); vair cx = 50 + Math.round(Math.random() * 300); vair cy = 50 + Math.round(Math.random() * 300); circle.style.transform = "translate(" + cx + "px," + cy + "px)"; vair rect = document.getElementById("rect"); vair x = 50 + Math.round(Math.random() * 300); vair y = 50 + Math.round(Math.random() * 300); rect.style.transform = "translate(" + x + "px," + y + "px)"; }, false); vair circle = document.getElementById ("círculo"); document.getElementById("button").addEventListener("click", function() { vair circle = document.getElementById("circle"); vair cx = 50 + Math.round(Math.random() * 300); vair cy = 50 + Math.round(Math.random() * 300); circle.style.transform = "translate(" + cx + "px," + cy + "px)"; vair rect = document.getElementById("rect"); vair x = 50 + Math.round(Math.random() * 300); vair y = 50 + Math.round(Math.random() * 300); rect.style.transform = "translate(" + x + "px," + y + "px)"; }, false); 
     circle, rect { -webkit-transition: all 0.7s ease-in-out; -moz-transition: all 0.7s ease-in-out; transition: all 0.7s ease-in-out; } rect { circle, rect { -webkit-transition: all 0.7s ease-in-out; -moz-transition: all 0.7s ease-in-out; transition: all 0.7s ease-in-out; } 
     <svg width="400" height="400"> <circle id="circle" r="10" stroke="none" fill="blue" style="transform:translate(200px,200px);" /> <rect id="rect" height="10" width="10" stroke="none" fill="red" style="transform:translate(100px,100px);" /> </svg> <button id="button">Animate</button> <svg width = "400" height = "400"> <svg width="400" height="400"> <circle id="circle" r="10" stroke="none" fill="blue" style="transform:translate(200px,200px);" /> <rect id="rect" height="10" width="10" stroke="none" fill="red" style="transform:translate(100px,100px);" /> </svg> <button id="button">Animate</button> /> <svg width="400" height="400"> <circle id="circle" r="10" stroke="none" fill="blue" style="transform:translate(200px,200px);" /> <rect id="rect" height="10" width="10" stroke="none" fill="red" style="transform:translate(100px,100px);" /> </svg> <button id="button">Animate</button> /> <svg width="400" height="400"> <circle id="circle" r="10" stroke="none" fill="blue" style="transform:translate(200px,200px);" /> <rect id="rect" height="10" width="10" stroke="none" fill="red" style="transform:translate(100px,100px);" /> </svg> <button id="button">Animate</button> </ svg> <svg width="400" height="400"> <circle id="circle" r="10" stroke="none" fill="blue" style="transform:translate(200px,200px);" /> <rect id="rect" height="10" width="10" stroke="none" fill="red" style="transform:translate(100px,100px);" /> </svg> <button id="button">Animate</button> 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.