JSFiddle - React, Tailwind, and code Playground

HTML

<!-- (c) Alex Major -->
<div id="mydiv">Full CSS3 Animation in Webkit and Javascript Animation in Mozilla</div>

CSS

/**
 * (c) Alex Major
 */

#mydiv {
    height: 100px;
    width: 100px;
    background-color: #fffff0;
    border: 1px solid #6699cc;
    font: 10px Helvetica;
    padding: 10px;
    -moz-transition: all 200ms ease; /* Mozilla transformation */
    -webkit-animation-name: dzzz;
    -webkit-animation-duration:800ms;
    -webkit-animation-timing-function:linear;
    -webkit-animation-iteration-count:infinite;
}

/* Only Webkit browser */
@-webkit-keyframes "dzzz" {
      0% { -webkit-transform: rotate(0deg);}
     25% {-webkit-transform: rotate(-2deg); }
     50% {-webkit-transform: rotate(2deg); }
     75% {-webkit-transform: rotate(-2deg); }
    100% { -webkit-transform: rotate(2deg); }
}

JavaScript

/**
 * (c) Alex Major
 */
+function(){
    if (navigator.userAgent.indexOf("Firefox")<0) return;

    var d = document.getElementById("mydiv");  
    d.style.MozTransform = "rotate(2deg)";

    d.addEventListener("transitionend", function(){
        d.style.MozTransform = d.style.MozTransform == "rotate(2deg)"
            ? "rotate(-2deg)"
            : "rotate(2deg)";
    }, false);
}();