скрипт снега на сайте - почему так?

12
МС
На сайте с 31.01.2006
Offline
26
1760

посмотрите как начинает подгружаться снег, первые 3-4 секунды просто висит в левом верхнем углу, потом начинает лететь, как и должно быть, сайт www.hotel-natali.ru можно сделать, чтобы сразу при загрузке он парил по экрану???

вот код скрипта:

<!-- use below as your body tag -->

<body onLoad="fall()">

<!-- paste in body -->

<script language="JavaScript">

<!-- fall Script by kurt.grigg@virgin.net

Amount=20; //Smoothness! depends on image file size, the smaller the size the more you can use!

//Pre-load your image below!

Image0=new Image();

Image0.src="flake1.gif";

Image1=new Image();

Image1.src="flake2.gif";

Image2=new Image();

Image2.src="flake3.gif";

Image3=new Image();

Image3.src="flake4.gif";

Image4=new Image();

Image4.src="flake5.gif";

grphcs=new Array(5)

grphcs[0]="flake1.gif"

grphcs[1]="flake2.gif"

grphcs[2]="flake3.gif"

grphcs[3]="flake4.gif"

grphcs[4]="flake5.gif"

Ypos=new Array();

Xpos=new Array();

Speed=new Array();

Step=new Array();

Cstep=new Array();

ns=(document.layers)?1:0;

if (ns){

for (i = 0; i < Amount; i++){

var P=Math.floor(Math.random()*grphcs.length);

rndPic=grphcs[P];

document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0><img src="+rndPic+"></LAYER>");

}

}

else{

document.write('<div style="position:absolute;top:0px;left:0px"><div style="position:relative">');

for (i = 0; i < Amount; i++){

var P=Math.floor(Math.random()*grphcs.length);

rndPic=grphcs[P];

document.write('<img id="si" src="'+rndPic+'" style="position:absolute;top:0px;left:0px">');

}

document.write('</div></div>');

}

WinHeight=(document.layers)?window.innerHeight:window.document.body.clientHeight;

WinWidth=(document.layers)?window.innerWidth:window.document.body.clientWidth;

for (i=0; i < Amount; i++){

Ypos = Math.round(Math.random()*WinHeight);
Xpos = Math.round(Math.random()*WinWidth);
Speed= Math.random()*1+0.5;
Cstep=0;
Step=Math.random()*0.1+0.05;
}
function fall(){
var WinHeight=(document.layers)?window.innerHeight:window.document.body.clientHeight;
var WinWidth=(document.layers)?window.innerWidth:window.document.body.clientWidth;
var hscrll=(document.layers)?window.pageYOffset:document.body.scrollTop;
var wscrll=(document.layers)?window.pageXOffset:document.body.scrollLeft;
for (i=0; i < Amount; i++){
sy = Speed*Math.sin(90*Math.PI/180);
sx = Speed*Math.cos(Cstep);
Ypos+=sy;
Xpos+=sx;
if (Ypos > WinHeight){
Ypos=-60;
Xpos=Math.round(Math.random()*WinWidth);
Speed=Math.random()*1+0.5;
}
if (ns){
document.layers['sn'+i].left=Xpos;
document.layers['sn'+i].top=Ypos+hscrll;
}
else{
si.style.pixelLeft=Xpos;
si.style.pixelTop=Ypos+hscrll;
}
Cstep+=Step;
}
setTimeout('fall()',10);
}
//-->
</script>

M
На сайте с 27.02.2006
Offline
62
#1

вот снизу строчка setTimeout('fall()',10); задержка 10 секунд, можно попробовать ее убрать

-> Продаю h4.ru (http://auction.nic.ru/search/list.cgi?s.keyword_in=&s.keyword=h4&s.domain_rubrics=&s.dom_length=2&x=35&y=4) Напишу парсер XML SQL CSV XLS любого объема и любого направления - от 0 до ... ГБ
Kolyaj
На сайте с 28.03.2006
Offline
69
#2
М.Сергей:
первые 3-4 секунды просто висит в левом верхнем углу

потому что эти 3-4 секунды сайт грузится, а начало движения снега у вас на событии onLoad. Можете попробовать запустить функцию fall сразу после открытия тэга body, если скрипт никаких других элементов DOM не затрагивает, все должно работать.

З.Ы.: Не используйте вот это


var hscrll=(document.layers)?window.pageYOffset:document.body.scrollTop;
var wscrll=(document.layers)?window.pageXOffset:document.body.scrollLeft;

неприятные скачки получаются при скроллинге страницы, пусть лучше снежинки тоже будут скролиться.

З.З.Ы.: В фаерфоксе не работает.

broken
На сайте с 03.10.2006
Offline
228
#3

странно -в мозилле он вообще прилип к левому краю и недвигается -висит кучкой.

могу посоветовать мой любимый скриптик снега. у меня грузится моментом.

<script>
// CREDITS:
// Snowmaker Copyright (c) 2003 Peter Gehrig. All rights reserved.
// Modified (c) 2005, Igor Svetlov, Nickname: 12345c
// Permission given to use the script provided that this notice remains as is.
var snowmax=25 // Set the number of snowflakes (more than 30 - 40 not recommended)
var snowcolor=["#c4bbcc","#ccddFF","#ccd6DD"]
// Set the colors for the snow. Add as many colors as you like
var snowtype=["Arial Black","Arial Narrow","Times","Comic Sans MS"]
// Set the fonts, that create the snowflakes. Add as many fonts as you like
var snowletter=["*","$","?","&#8356;","<img src=snow.gif>","<img src=snow21.gif>"];
// Set the letter that creates your snowflake (recommended:*)
var sinkspeed=0.6 // Set the speed of sinking (recommended values range from 0.3 to 2)
var snowmaxsize=45 // Set the maximal-size of your snowflaxes
var snowminsize=18 // Set the minimal-size of your snowflaxes
var snowsizerange=snowmaxsize-snowminsize
// Set the snowing-zone
// Set 1 for all-over-snowing, set 2 for left-side-snowing
// Set 3 for center-snowing, set 4 for right-side-snowing
var snowingleft=0.0 //левая граница присутствия снега
var snowingwidth=1 //ширина присутствия снега в окне
var opac=0.35 //непрозрачность снега (0.0-1.0), при 1.0 в 2 раза быстрее работает.
var stepTime=120 //шаг покадровой анимации (мсек). При менее 100 сильно нагружает процессор
var snow=new Array()
var marginbottom
var marginright
var timer
var x_mv=new Array(); var crds=new Array(); var lftrght=new Array();
var browserinfos=navigator.userAgent
d=document
var isOpera=self.opera
var ie5=d.all&&d.getElementById&&!isOpera
var ns6=d.getElementById&&!d.all
var browserok=ie5||ns6||isOpera

function randommaker(range){return Math.floor(range*Math.random())}

function botRight()
{
if(ie5||isOpera)
{
marginbottom=d.body.clientHeight;
marginright=d.body.clientWidth;
}
else
if(ns6)
{
marginbottom=innerHeight; marginright=innerWidth;
}
}

function checkPgDn()
{
scrltop=ns6?pageYOffset:document.body.scrollTop;
}

function initsnow()
{
checkPgDn();if(ns6)setInterval("checkPgDn()",999);
botRight();
for (i=0;i<=snowmax;i++)
{
crds = 0;
lftrght = Math.random()*20;
x_mv = 0.03 + Math.random()/10;
snow=d.getElementById("s"+i)
snow.style.fontFamily=snowtype[randommaker(snowtype.length)]
snow.style.fontSize=snow.size=randommaker(snowsizerange)+snowminsize
snow.style.color=snowcolor[randommaker(snowcolor.length)]
snow.sink=sinkspeed*snow.size/5
newPosSnow(randommaker(marginbottom-3*snow.size));
}
movesnow();
}

function newPosSnow(y)
{
var o;
snow.posx=randommaker(marginright*snowingwidth-2*snow.size)+marginright*snowingleft
snow.posy=y+(ns6?pageYOffset:d.body.scrollTop);
snow.size=randommaker(snowsizerange)+snowminsize;
if(snow.hasChildNodes()&&(o=snow.childNodes[0]).tagName=='IMG') o.width=o.height=randommaker(snowsizerange/1.6)+snowminsize;
}

function movesnow()
{
for (i=0;i<=snowmax;i++)
{
snow.style.top=snow.posy+=snow.sink+lftrght*Math.sin(crds)/3;
crds += x_mv;
snow.style.left=snow.posx+lftrght*Math.sin(crds);
if(snow.posy>=marginbottom-3*snow.size+scrltop || parseInt(snow.style.left)>(marginright-3*lftrght))newPosSnow(0);
}
var timer=setTimeout("movesnow()",stepTime)
}

for (i=0;i<=snowmax;i++)
{
d.write("<span id='s"+i+"' style='position:absolute;"+(opac<1?"-moz-opacity:"+opac+";filter:alpha(opacity="+(opac*100)+")":"")+";top:-"+snowmaxsize+"'>"
+snowletter[Math.floor(snowletter.length*Math.random())]+"</span>")
} //-moz-opacity:0.5;filter:alpha(opacity=50);

onload=function()
{
if(browserok)setTimeout("initsnow()",99);
}

onmousewheel = onscroll = function(){checkPgDn()}
onresize = function(){botRight();}
</script>
МС
На сайте с 31.01.2006
Offline
26
#4

Всем спасибА, прийду домой посмотрю, что с ним получится сделать!!!

verhmax
На сайте с 01.12.2005
Offline
191
#5

а вообще не все посетители сайтов любят такие красивые штучки. вот у меня, например, такой скрипт занимает очень много ресурсов. страница просто подглючивает когда есть снежинки:-(

[Удален]
#6

off: за музыку, снег и прочий украшательский js на сайте надо проводить принудительную лоботомию.

Junior
На сайте с 19.04.2005
Offline
58
#7
Miha Kuzmin (KMY):
за музыку, снег и прочий украшательский js на сайте надо проводить принудительную лоботомию.

Миша, хотите поговорить про промо-сайты? ;)

Труженик КП, ТЗ и ИА
[Удален]
#8

Junior, где вы там увидели промо-сайт ?

Junior
На сайте с 19.04.2005
Offline
58
#9
Miha Kuzmin (KMY):
Junior, где вы там увидели промо-сайт ?

Ага, т.е. лоботомия только в данном случае или вообще в принципе?

a.fatman
На сайте с 15.01.2006
Offline
127
#10

Офф...

Не знаю, где оригинал.



Что на этот раз? - спросил Дергачёв, осторожно переступая через труп лежащего на полу мужчины.

Двое веб-дизайнеров нехотя отвернулись от мониторов и теперь устало смотрели на своего начальника.

Тот почему-то замялся.

- Нет, я, конечно, всё понимаю... Но уже не первый наш клиент вот так вот... Что?.. Чего он хотел?..

Веб-дизайнер Слава встал изо стола, подошёл вплотную.

- Он хотел, чтоб мы сделали ему на сайте что-нибудь новогоднее, понимаете?.

- Ну... - снова замялся Дергачёв. - ...Праздники, всё такое... Что-нибудь новогоднее...

На сайте... Из-за этого вот так? Нет, не понимаю. Если только он не хотел....

- ... Именно это он и хотел, - сел на своё место Слава.

- Тьфу-ты... Так бы сразу и сказали!

Дергачёв плюнул на мужчину и направился к двери, по пути наступив на руку лежащего.

Через секунду за ним захлопнулась дверь.

Руководитель ООО "Карина-Альянс" Павел Алексеевич Новиков хотел, чтобы в новогодние праздники на сайте его фирмы падали снежинки.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий