Эффект фейерверка

<html lang="ru">

<head>

<title>Анимационные эффекты | Эффект фейерверка</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<meta http-equiv="Content-Language" content="ru">

<style>

<!--

BODY

{

background: white;

}

TABLE

{

width: 100%;

height: 100%;

}

#ID_ANIMATE

{

position: relative;

width: 420px;

height: 256px;

overflow: hidden;

background: black;

}

#ID_ANIMATE DIV

{

position: absolute;

width: 1px;

height: 1px;

font-size: 0px;

z-index: 1;

}

#ID_ANIMATE #ID_LOGO

{

font: normal 14px "Courier New", monotype;

}

-->

</style>

</head>

<body>

<TABLE>

<TR>

<TD align="center" valign="middle">

<DIV ID="ID_ANIMATE">

<TABLE>

<TR>

<TD align="center" valign="middle" ID="ID_LOGO">

<span style="color: red;">Скрипт, создающий эффект фейерверка.<br>

Он может использоваться для размещения блоков поздравлений

или праздничных объявлений на сайте.</span>

<a style="color: blue;" href="https://codeguru.ru">codeguru.ru</a>

</TD>

</TR>

</TABLE>

</DIV>

</TD>

</TR>

</TABLE>

<script type="text/javascript">

<!--

// Code by Victor V. Vakchturov (https://codeguru.ru)

// Настройки

var nStarCount = 256; // Количество звезд фейерверка

var nMinSpeed = 2; // Минимальная скорость звезд

var nMaxSpeed = 4; // Максимальная скорость звезд

var nMinLive = 32; // Минимальное время жизни элемента

var nMaxLive = 42; // Максимальное время жизни элемента

var fDSpeed = 0.1; // Величина уменьшения скорости элементов

// --

var nTimerID = 0;

var aStars = new Array(nStarCount);

var oAnimate = document.getElementById("ID_ANIMATE");

var nWidth = oAnimate.offsetWidth;

var nHeight = oAnimate.offsetHeight;

// Еще настройки

var nMinX = Math.round(nWidth / 4);

var nMaxX = Math.round(nWidth / 4 * 3);

var nMinY = Math.round(nHeight / 4);

var nMaxY = Math.round(nHeight / 4 * 3);

function UpdateStarPos(i)

{

var oDiv = aStars[i];

oDiv.style.top = Math.round(oDiv.y).toString() + "px";

oDiv.style.left = Math.round(oDiv.x).toString() + "px";

}

function UpdateStarBgColor(i)

{

var oDiv = aStars[i];

oDiv.style.backgroundColor = "RGB(" +

Math.round(Math.random() * 0xFF).toString() + "," +

Math.round(Math.random() * 0xFF).toString() + "," +

Math.round(Math.random() * 0xFF).toString() + ")";

}

function ResetStar(i, x, y)

{

var oDiv = aStars[i];

oDiv.x = x;

oDiv.y = y;

oDiv.fSpeed = Math.random() * (nMaxSpeed - nMinSpeed) + nMinSpeed;

oDiv.fCos = Math.random() * 2 - 1;

oDiv.fSin = Math.random() * 2 - 1;

oDiv.nLive = Math.round(Math.random() * (nMaxLive - nMinLive) + nMinLive);

UpdateStarPos(i);

UpdateStarBgColor(i);

}

function MoveStars()

{

var bEndShow = true;

for(var i = 0; i < nStarCount; i++)

{

var oDiv = aStars[i];

if(oDiv.nLive)

{

oDiv.x += oDiv.fSpeed * oDiv.fCos;

oDiv.y += oDiv.fSpeed * oDiv.fSin;

oDiv.fSpeed -= fDSpeed;

if(oDiv.fSpeed < 0)

oDiv.fSpeed = 0;

UpdateStarPos(i);

UpdateStarBgColor(i);

oDiv.nLive--;

if(!oDiv.nLive)

oDiv.style.backgroundColor = "black";

bEndShow = false;

}

}

if(bEndShow)

{

window.clearInterval(nTimerID);

window.setTimeout(StartFireShow, 1500);

}

}

function StartFireShow()

{

var x = Math.round(Math.random() * (nMaxX - nMinX)) + nMinX;

var y = Math.round(Math.random() * (nMaxY - nMinY)) + nMinY;

for(var i = 0; i < nStarCount; i++)

ResetStar(i, x, y);

nTimerID = window.setInterval(MoveStars, 40);

}

function GenerateStars()

{

for(var i = 0; i < nStarCount; i++)

{

var oDiv = aStars[i] = document.createElement("DIV");

oDiv.style.width = "1px";

oDiv.style.height = "1px";

oDiv.style.overflow = "hidden";

oDiv.style.position = "absolute";

oAnimate.appendChild(oDiv);

}

}

GenerateStars();

StartFireShow();

// -->

</script>

</body>

</html>


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: