ugrás a tartalomhoz

Egy elem láthatósága

sEEcher · 2012. Feb. 14. (K), 12.27
Sziasztok!

Létezik-e valami egyszerű megoldás egy elem láthatóságának lekérésére JavaScript-ben? Gondolok itt mondjuk egy fejlécre, amit ha lejjebb görgetünk az oldalon már nem láthatunk, mert már nincs benne az éppen látható oldalterületben.

Körülbelül azt szeretném elérni, mint a Facebook timeline-oldalán, ahol ha lejjebb görgetünk és már nem látjuk a borítókép alatti profiladatokat sem, megjelenik egy kisebb navigációs fejléc.

Köszi előre is!
 
1

Természetesen

Poetro · 2012. Feb. 14. (K), 12.32
Természetesen létezik ilyen. Keress rá below the fold illetve above the fold kifejezésekre. Ben Alman, aki minden írt már jQuery plugint, természetesen erre is írt egy viewportOffset nevűt, illetve a jQuery Lazy Load plugin is tartalmaz egy megoldást.
2

...

sEEcher · 2012. Feb. 14. (K), 14.06
Azt írja a fejlesztőpanel, hogy:

Uncaught TypeError: Object #<Object> has no method 'viewportOffset'

pedig látszólag minden úgy van, mint a példakódban.
3

kihagytál valamit

Poetro · 2012. Feb. 14. (K), 14.35
Akkor biztosan kihagytál valamit.
4

...

sEEcher · 2012. Feb. 14. (K), 16.20
A fickó által írt js-t betöltöttem, a jquery-t betöltöttem, az látszólag működik is. Az url-eket leellenőriztem, mindkét js megnyitható. A példakódon pedig éppen csak az id-t írtam át, aminek nem kellene problémának lenni.

Mit hagyhattam esetleg ki? Kipróbáltam egy másik kódot is és az működött, viszont nem felelt meg teljesen.
5

...

sEEcher · 2012. Már. 2. (P), 01.59
Újból nekiesve már sikerült összehoznom. Egyszer csak megjavult. A témával kapcsolatban viszont egy érdekességre lettem figyelmes, amivel nem igazán tudok mit kezdeni. A lejjebb görgetésre megjelenő 54px magas logót felülről becsúsztatva jelenítem meg és tüntetem el a .animate({top: 0},400); és a animate({top: -54},400); segítségével. A dolog működik, viszont amikor visszagörgetek az oldal tetejére, a logó csak egy random idő múlva tűnik el. Nem értem a késleltetés okát. fadeIn-Outtal késleltetés nélkül működik.
6

Csak valószínűsítem,

Pepita · 2012. Már. 2. (P), 21.07
hogy sokszor fut le a görgetési esemény.

Már estem hasonló hibába, de nem emlékszem pontosan, a tiédhez meg a teljes kódot kéne próbálgatni.

Úgy emlékszem, nekem görgetési eseménnyel volt olyan, hogy kb. annyiszor futott le a kezelő, ahány pixelt(?) görgettem a lapon. Ezt ráadásul úgy képzeld el - a 400 ms miatt -, hogy már elkezdődik az ucsó és még nem fejeződött be az első. Emiatt akár több száz példányban is memóriában van az eseménykezelő, az interpreter nem tudja olyan gyorsan feldolgozni, és ott a random csúszás.

Megoldási javaslatom pillanatnyilag nincs, de a probléma szerintem ilyesmi.
7

timeout

Poetro · 2012. Már. 2. (P), 21.27
Hat a görgetés ellenőrzését mindenképpen valami timouthoz kell kötni. Azaz indítasz egy timeoutot, és csak akkor csinálsz valami komolyabbat, ha a felhasználó már legalább 100ms óta nem görgetett.
8

Ja-ja

Pepita · 2012. Már. 2. (P), 21.39
Asszem amikor nekem volt ez gond, akkor egyszerűen másik eseményhez kötöttem, mert egy lényegtelen design-sz..ág volt... De igen, vagy csak az első, vagy csak az ucsó görgetési eseményt kell, adott időn belül, ill. ideig.