Thanks to CSS3 we no longer need Flash to produce good-looking animations. In general we do not even need JavaScript. But CSS3 falls short for some use cases. If you need to calculate or recalculate your animations, there's no getting round JavaScript. You do not have to use setTimeout and setInterval though. These do carry the disadvantage of simply repeating a function in defined intervals. Looking at animations, defined intervals are not the best way to make them work. If you have been using these two functions, you probably already experienced difficulties in finding the values for intervals in match with the required animation steps. Furthermore, setTimeout and setInterval rarely are in sync with the display refresh rate, which leads to the effect, that animations cannot be precisely presented. It doesn't have to be that way, though...