Strona 1 z 1

Ruch menu

PostNapisane: 15 lipca 2003, o 18:09
przez Dyrcio
Witam
Mam problem i nie ukrywam że liczę na Was :)
Problem:
Jest sobie menu i chciałbym, aby ono porzesuwało sie w dół podczas przesuwania strony w dół i na odwrót.
Przyczym nie chodzi mi o funkcję setInterval("funkcja()", 100);, raczej o jakis obiekt event.
Podczas funkcji setInterval("funkcja()", 100) "mruga sobie" kursor, który mnie denerwuje :(
Wykombinowałem sobie takie cus:
Zachodzi zmiana w obiekcie event i wykonuje mi sie jakaś tam funkcja.
obiekt musiałby rejestrować zmiany: kalwyszy PGUP i PGDOWN, ruch suwaka(scrolla) i rolki w myszce itp.
Dzięki za wszelką pomoc :)
Wystarczy mi, które obiekty są za to odpowiedzialne :wink:

PostNapisane: 16 lipca 2003, o 02:10
przez Wydra707

PostNapisane: 16 lipca 2003, o 08:41
przez januzi
plik przewin.jss
obiekt = null ; percent = null ;
lastScrollY = 0; lastScrollX = 0;
diffY = diffX = 0 ;
left_0 = top_0 = 0 ;

if (document.layers) { obiekt = document.slide ; }
if (document.getElementById) { obiekt = document.getElementById('slide').style ; }
if (document.all) { obiekt = document.all['slide'].style ; }

if ( obiekt.top != '' ) top_0 = parseInt( obiekt.top ) ;
if ( obiekt.left != '' ) left_0 = parseInt( obiekt.left ) ;

function get_position() {

if (document.all) {
diffY = document.body.scrollTop ;
diffX = document.body.scrollLeft ;
}
else {
diffY = self.pageYOffset ;
diffX = self.pageXOffset ;
}
}

function count_p( inp ) {

if(inp > 0) return Math.ceil(inp);
else return Math.floor(inp);
}

function jSlide() {

get_position() ;

if(diffY != lastScrollY) {
percent = count_p( .1 * (diffY - lastScrollY) ) ;
obiekt.top = lastScrollY + top_0 ;
lastScrollY += percent;
}

if(diffX != lastScrollX) {
percent = count_p( .1 * (diffX - lastScrollX) ) ;
obiekt.left = lastScrollX + left_0 ;
lastScrollX += percent;
}
setTimeout( "jSlide()", 1 ) ;
}


Plik ze strona :
(sekcja head)
<span ID="slide"> tutaj menu </span>
<script LANGUAGE="JavaScript" src="przewin.jss"> </script>
<STYLE>
#slide
{
Position : Absolute ;
Left : 3 ;
Top : 5 ;
}
</STYLE>

(sekcja body)
<BODY onLoad="jSlide();">

Powinno ruszyc bez wiekszych poprawek. Sposob dzialania mozna zobaczyc na stronie http://aji-manga.nowysacz.net/chrono/chrono.php

PostNapisane: 16 lipca 2003, o 23:32
przez Wydra707

PostNapisane: 16 lipca 2003, o 23:48
przez januzi

PostNapisane: 17 lipca 2003, o 00:05
przez Wydra707
Ależ ja nie twierdzę, że to sprawi jakieś problemy. Po prostu masz cały czas w tle pracujący w kółko i w kółko skrypt powtarzający się pewnie z kilkaset razy na sekundę... Nawet jeśli strona stoi (nie przewija się) skrypt ciągle sam się wywołuje i wykonuje swoje instrukcje. Moim zdaniem to bardzo nieoptymalne... Ale co kto lubi :-)

Pozdrawiam
Paweł Rajewski

PostNapisane: 18 lipca 2003, o 16:43
przez Dyrcio
Thx Wszystkim za zainteresowanie.
Sorki że teraz opd. bo dopiero wrocilem :)
Co do rozwiązań to sprawdzę :)
A wracając do mojego problemu, to faktycznie wolałbym nie stosować "pętli działających w tle"
Jeszcze raz dzięki.