<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CSS Transition of SVG elements</title>

<style type="text/css" media="screen">
  div {
    -webkit-box-sizing: border-box;
  }
  
  .column {
    margin: 10px;
    display: inline-block;
    vertical-align: top;
  }
  .container {
    position: relative;
    height: 200px;
    width: 200px;
    margin: 10px;
    background-color: silver;
    border: 1px solid black;
  }
  
  .box {
    position: absolute;
    top: 0;
    left: 0;
    height: 60px;
    width: 60px;
    border: 1px dotted black;
    transform-origin: top left; /* to match SVG */
  }

  .final {
    border: 1px solid blue;
  }
  
  #target, #ref {
    transition-property: transform;
    transition-duration: 1s;
  }   
</style>

<script type="text/javascript" charset="utf-8">
  var flag = true;
  
  function transition() {
    var svgElm = document.getElementById("target");
    var divElm = document.getElementById("ref");

    if (flag) {
      svgElm.style.transform = "translate(75px, 25px) scale(2) rotate(45deg)";
      divElm.style.transform = "translate(75px, 25px) scale(2) rotate(45deg)";
    }
    else {
      svgElm.style.transform = "translate(0px, 0px) scale(1) rotate(0deg)";
      divElm.style.transform = "translate(0px, 0px) scale(1) rotate(0deg)";
    }
    flag = !flag;
  }
</script>
</head>
<body>
  <h1>CSS Transition of "trasform" property for SVG elements</h1>

  <p>The element below should transition when button is clicked</p> 
  <p>The SVG transition should be identical with the CSS one</p>

  <input type="button" value="Transition" onclick="transition()" />

  <div class="column">
    <h2>SVG compound</h2>
    <div class="container">
      <svg xmlns="http://www.w3.org/2000/svg" version="1.1"  
          viewBox="0 0 200 200" style="width:200px; height:200px;">
        <rect id="target" x="0" y="0" width="60" height="60" stroke="blue" fill="none">
        </rect>
      </svg>
    </div>

    <h2>CSS compound</h2>
    <div class="container">
      <div class="final box" id="ref">
      </div>
    </div>
  </div>

</body>
</html>