Copy and paste the code into an html file to try it out:
<!DOCTYPE html>
<html>
<head>
<title>Fire</title>
<script type="text/javascript">
function fireText()
{
var FireColorStop = function( xPos, yPos, blur, color )
{
this.x = xPos;
this.y = yPos;
this.blur = blur;
this.color = color;
this.oscSpeed = Math.random() * Math.abs( yPos ) / 75;
this.oscIncrement = 0;
this.xOffset = 0;
this.yOffset = 0;
this.blurOffset = 0;
};
FireColorStop.prototype.oscillate = function()
{
this.oscIncrement += this.oscSpeed;
this.xOffset = Math.sin(this.oscIncrement) * this.blur / 3;
this.yOffset = Math.sin(this.oscIncrement) * 1;
this.blurOsc = this.blur + 10 + Math.sin(this.oscIncrement) * 3;
};
FireColorStop.prototype.getCSS = function()
{
return ( this.x + this.xOffset ) + 'px ' + ( this.y + this.yOffset ) + 'px ' + this.blurOsc + 'px ' + this.color;
};
// create objects for each color stop for independent animation
var fireColors = [ new FireColorStop(0, 0, 4, '#FFFFFF'),
new FireColorStop(0, -5, 4, '#FFFF33'),
new FireColorStop(2, -10, 6, '#FFDD33'),
new FireColorStop(-2,-15, 11, '#FF8800'),
new FireColorStop(2, -25, 18, '#FF2200')
];
var fps = 1000/30;
var text = document.getElementById('fireText');
// oscillate color stops and rebuild fire css
setInterval( function(){
var shadowCSS = '';
for( var i = 0; i < fireColors.length; i++ )
{
fireColors[i].oscillate();
shadowCSS += fireColors[i].getCSS();
if( i < fireColors.length - 1 )
shadowCSS += ', ';
}
text.style.textShadow = shadowCSS;
}, fps );
}
</script>
<style>
body, html {
background-color:black;
}
#fireText {
background-color:black;
position:absolute;
display:block;
width:100%;
height:300px;
line-height:300px;
color:white;
font-family: Arial, Verdana, sans-serif;
font-size:50px;
font-weight:bold;
text-align:center;
}
</style>
</head>
<body>
<div id="fireText">
Yeah Dude.
</div>
<script type="text/javascript">
fireText();
</script>
</body>
</html>

No comments:
Post a Comment