Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Div podążający za ekranem ale dopiero od pewnego momentu...
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
emitra
Witam serdecznie.
Potrzebuje pomocy i za wszelkie pomysły będę niezmiernie wdzięczny.

Na początek obrazek który zobrazuje problem opisany pod nim.



Legenda:
To czerwone to jakiś obiekt powiedzmy Obrazek albo <div> bedący nagłówkiem kolumny..

Problem:
Chciał bym żeby po załadowaniu strony gdy "Czerwony Obiekt" jest ładnie widoczny był on na miejscu tak jak widac na rysunku z lewej.

Następnie gdy zjeżdżamy skrollem w dół i dochodzimy do momentu ze "Czerwony Obiekt" zaczyna znikac z ekranu ten podąża za nami.


Moj pomysł:
Moim, pomysłem było by wykryć moment znikania "Czerwony Obiekt" i przelaczyc go w tym momencie na position: fixed jednak jak to wykryc.
Probowałem z offsetTop jednak on wskazuje w FF i IE zawsze przesuniecie w pionie wzgledem poczatku strony a nei tego co widzimy.
Probowałem ustawić ukrytego DIVa w pozycji fixed i odejmowac ich offsety od siebie niestety offsetTop obiektu w possition: fixed jest staly co dla mnie jest czyms niezrozumialym skoro sie przemiszcza rrazem z tym co widzimy a jego offsetTop wciaz bez zmian.

Moze istnieje inny parametr niz offsetTop który mogę wykorzystac. a moze jest jaksi prostrzy sposob.

Sprawa dość pilna bo dalsze prace w projekcie czekaja na rozwiazanie lub nie. Twego problemu.
Aha zastępowanie "glowego Diva" Iframem nei wchodzi w gre.

Z pozdrowieniami
czekający na pomoc smile.gif
Stalos
  1. var t_nazwaPrzegladarki = navigator.appName;
  2. var m_IE = false;
  3. var m_Y = 0;
  4. var m_Y_zmiana = 0;
  5. var licznik = 0;
  6.  
  7.  
  8. m_IE = (t_nazwaPrzegladarki.indexOf("Explorer")>=0)?true:false;
  9.  
  10. onload = function(){
  11. window.onscroll = sprawdzaj;
  12. }
  13.  
  14.  
  15. function mierz_odleglosc(){
  16. var obrazek = document.getElementById("obrazek");
  17. m_Y = obrazek.offsetTop;
  18. }
  19.  
  20. function mierz(){
  21. if (!m_IE) document.captureEvents(Event.MOUSEMOVE);
  22. document.onmousemove = pobierz_wspolrzedne;
  23.  
  24. function pobierz_wspolrzedne(e) {
  25. if (m_IE) {
  26. m_Y_zmiana = event.clientY + document.body.scrollTop;
  27. }
  28. else {
  29. m_Y_zmiana = e.pageY;
  30. }
  31.  
  32. if (m_Y_zmiana < 0){
  33. m_Y_zmiana = 0;
  34. }
  35.  
  36. }
  37. }
  38.  
  39. function sprawdzaj(){
  40. var obrazek = document.getElementById("obrazek");
  41. mierz_odleglosc();
  42. window.onmousemove = mierz;
  43.  
  44.  
  45. if (m_Y_zmiana >(m_Y+220)){
  46. licznik++;
  47. var podstaw =licznik + "0 0 0";
  48. // alert(m_Y_zmiana);
  49. obrazek.style.margin = podstaw;
  50. }
  51.  
  52. }
  53.  
  54. </head>
  55. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  56.  
  57. <div id="nazwa" style="margin-left:200px;"><img src="images/1.gif" id="obrazek" /></div>
  58.  
  59. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  60. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  61. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  62.  
  63.  
  64.  
  65. </body>
  66. </html>



Tam jest jeszcze dużo błędów - tylko tak mniej więcej pokazałem że to może działać.

PS - zdaje mi się że można to zrobić dużo łatwiej!
PS2 - jest tam taka wartość 220 - ją trzeba zmienić w zależności od przeglądarki
PS3 - na IE nie testowałem
emitra
żeby takie coś działo w takiej formie trzeba powolutku przewijac okno. bo małe szarpniecie naprawdę malutkie i już obrazek nie nadąża.
Poza Ty oparte to jest o miejsce zlapania za scrola i wystaczy ze zlapie sie za wysoko to nie zjezdza w innej odleglosci od ogry niz gdy zalapiemy w sordku. Jak zlapiemy na dole to w ogole zjezdza juz gdy wciaz jest widoczny smile.gif

Ale dziękuję za odpowiedź.
Może ktoś jeszcze jakiś pomysł.

  1.  
  2. var pozycjaStartowaY = 269;
  3.  
  4. onload = function(){
  5. window.onscroll = sprawdzaj;
  6. }
  7.  
  8. function sprawdzaj()
  9. {
  10. var obrazek = document.getElementById("obrazek");
  11.  
  12. //jezeli jestesmy wyzej to porpawnei umiejscawiamy obrazek nastartowej bo czasem potrafi dosjc do rozbierznosci
  13. if ( document.body.scrollTop < pozycjaStartowaY )
  14. obrazek.style.top = pozycjaStartowaY;
  15. else
  16. obrazek.style.top = document.body.scrollTop ;
  17.  
  18. }
  19.  
  20. </head>
  21. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  22.  
  23. <div id="nazwa" style="margin-left:200px; border:1px solid red; height: 500px;">
  24. <img src="images/address-book.png" id="obrazek" style='position: absolute; top: 269;' /></div>
  25.  
  26. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  27. <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
  28. <br /><br /><br /><br /><br /><br /><br />
  29.  
  30.  
  31. </body>
  32. </HTML>



Takie coś spłodziłem. Tylko że tak naprawde nie do konca to dziala bo ten Div z czerowna ramka ma byc obszarem w ktorym sie porusza obrazem a ok on wyzej nie poleci ale z dolu wychodzi i teraz czy jest mozliwosc sprawdzenia dolnej granicy Diva. pozycji border-bottom smile.gifquestionmark.gif?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.