Cool Animated Fire Effects with CSS3 and jQuery
JQuery
<script type="text/javascript">
var step = 1;
function nextShadow(){
$('#onfire span').each(function(){
y = parseFloat($(this).attr("y_pos"));
y += step + Math.random()*3;
$(this).attr("y_pos", y);
shaking = Math.random();
shadow1 = "0px 0px "+(y%5)+"px white";
shadow2 = shaking*24/y*Math.cos(y/5)*15+"px -"+(shaking*4/y+(y%17))+"px "+(shaking+(y%17))+"px red";
shadow3 = shaking*24/y*Math.cos(y/7)*15+"px -"+(shaking*4/y+(y%31))+"px "+(shaking+(y%31))+"px #993";
shadow4 = shaking*24/y*Math.cos(y/13)*15+"px -"+(shaking*4/y+(y%41))+"px "+(shaking+(y%41))+"px yellow";
$(this).css("text-shadow", shadow2+", "+shadow1+", "+shadow4+", "+shadow3);
});
}
$(function(){
$('#onfire span').each(function(){$(this).attr("y_pos","0");});
setInterval(nextShadow, 50);
});
</script>
CSS
#onfire{
height:auto;
padding-top:3em;
font-size: 42px;
font-weight: bold;
text-align: center;
color:brown;
}
Description
This effect has been created with some jQuery for setting different CSS3 text-shadow’s in a div. You can check code to see how it’s done. Basically, the Javascript function creates 3
text-shadows (white, yellow and red) with coprime “cycle durations” so
the effect looks more random even though it’s totally deterministic.
Each shadow moves in the Y axis with a linear function and in the X axis with a cosine function. Pretty simple, but effective.
Comments
Post a Comment