| space, → | next slide | 
| ← | previous slide | 
| d | debug mode | 
| ## <ret> | go to slide # | 
| c | table of contents (vi) | 
| f | toggle footer | 
| r | reload slides | 
| z | toggle help (this) | 
<style type="text/css" media="screen"> 
    .test {
        background-color:green;
        text-align:center;
        width:400px;
        height:400px;
        -webkit-transition: background-color 2s ease-in;
    }
</style>
<script>
function startATransition () {
    this.style.cssText +=  " background-color: red;"
}
</script>
<div onclick="startATransition()" 
     class="test">
</div>
<style type="text/css" media="screen"> 
    .test {
        background-color:green;
        text-align:center;
        width:200px;
        opacity:0.8;
        -webkit-transition:-webkit-transform 2s ease-in;
    }
</style>
<script>
function startATransition () {
    this.style.cssText +=  " -webkit-transform: rotate(720deg)"
                         + "scale(2.5)" 
                         + "rotateX(720deg)" 
                         + "translate3d(0px,200px,0px);" 
}
</script>
<div onclick="startATransition()" 
    class="test">
    42l∞ps 
</div>transitions(el, aList, cb, scope)var myTransitionsConfig = [
    {
        val:'translate3d(100px,0,0)',
        dur:1,
        easing:'linear',
        cb: function (elt) {
            ...
        }
    },
    ...
];Function.prototype.delay = function(s){ 
    setTimeout(this, s*1000); 
};function css (id, style) { 
    var el = id;
    if (typeof id == 'string') {
        el = document.getElementById(id);
    }
    el.style.cssText += ';' + style; 
}function anim (id, transform, dur, easing){
   css(id, '-webkit-transition:'
           + -webkit-transform '  
           + ( dur || 0.5 ) + 's ' 
           + ( easing || '' ) 
           + '; -webkit-transform:'
           + transform);
}
function transitions(elt, l, cb, scope) {
    var index = 0;
    var animation = function () {
        anim(elt, l[index].val, l[index].dur, l[index++].easing);
    } 
    animation.delay(0);
    elt.addEventListener( "webkitTransitionEnd", 
                          onTansitionEnd,
                          true);
    function onTansitionEnd(ev) {
        ev.stopPropagation();
        if(ev.srcElement === elt) {
            if (l[index-1].cb)  l[index-1].cb.call(scope, elt);
            if (index === l.length) {
                elt.removeEventListener("webkitTransitionEnd",
                                         onTansitionEnd,
                                         true);
                if (cb)  cb.call(scope, elt);
            }
            else {
                animation.delay(0);
            }
        }
    }
}
var a = new Date().getTime();
function delta() {
    console.log((new Date().getTime() - startTime) + 'ms');
}
var oups = 
[{
    val:'translate3d(500px,100px,0) rotate(720deg)',
    dur:1,
    easing:'linear',
    cb: delta 
}, {
    val:'translate3d(700px,0px,0) skewY(340deg) rotate(-540deg)',
    easing:'ease-in-out',
    dur:2,
    cb: delta
}, {
    val:'translate3d(400px,100px,0) rotate3d(34,45,36,-560deg)',
    easing:'ease-in',
    dur:3,
    cb: delta
}, {
    val:'translate3d(0px,0px,0) rotate(0deg)',
    easing:'ease-in',
    dur:1,
    cb: delta
}]; 
<img id='my-super-test' src='image/one/promotejsvs.png' />
var myelt = document.getElementById('my-super-test');
transitions(myelt, oups, function (elt) {
    alert('Done');
});

MyLastAnimations.forEach(function (trans, index) {
  transitions(document.getElementById('star-'+(index+1)), trans); 
});