Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery] przesuwanie diva z tłem w nieskonczonej pętli
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
basu
jak przesuwać tło w divie, tworząc tylko krótki obrazek tła i powtarzać go w pętli?

Znalazlem taki przyklad, ktory prawie mi odpowiada, ale tutaj tworza długi obrzek tła na szerokość 1000px i animuja tylko 1 raz.

http://robot.anthonycalzadilla.com/
Fifi209
Stwórz taki dłuugi obrazek i zmieniaj mu pozycję. winksmiley.jpg
basu
wlasnie nie chce tworzyc dlugich obrazkow, tylko zapętlić krótki smile.gif wiem że sie da, tylko jak?
ayeo
Witam!



No bardzo łatwo biggrin.gif Powiedzmy, że masz obrazek picture.png o wymiarach 300x200. R0bisz sobie tzw okienko czyli ten widoczny fragment (załóżmy, że wielkości tej samej co obrazek). Dajesz mu overflow: hidden. W środku wstawiasz diva o szerokości takiej jak suma obrazków (może być ten sam powtórzony 2 razy). Przesuwasz sobie ten kontener (ten co zawiera te 2 obrazki) i jak przesuniesz więcej niż szerokość to wracasz o szerokość. Czyli wizualnie jesteś w tym samym miejscu, a masz co przesuwać.



Mam nadzieję, że jasne.



Pozdrawiam!
basu
zrobilem cos takiego do tej pory:

  1. $(document).ready(function(){
  2.  
  3. $('#ground').css({backgroundPosition: 'left bottom'});
  4.  
  5. $('#wrapper').css({overflow: "hidden"});
  6.  
  7. animation();
  8. //setTimeout("animation2()",10000);
  9. });
  10.  
  11. function animation() {
  12. $('#ground').animate({backgroundPosition: '(-500px bottom)'}, 1000);
  13. animation2();
  14. }
  15.  
  16. function animation2() {
  17. $('#ground').animate({backgroundPosition: '(0px bottom)'}, 10000);
  18. animation();
  19. }


  1. div {position: relative;}
  2.  
  3. #wrapper {
  4. background: #bedfe4 url(sun.png) no-repeat left -30px;
  5. border: 5px solid #402309;
  6. height: 400px;
  7. width:500px;
  8. }
  9.  
  10. #ground {
  11. background: url(ground-05.png) no-repeat left bottom;
  12. height: 400px;
  13. width: 1000px;
  14. }
  15.  
  16. #branding {
  17. background: url(robot-head.png) no-repeat center top;
  18. width: 271px;
  19. height: 253px;
  20. z-index: 4;
  21. }


  1. <div id="wrapper">
  2. <div id="ground"></div>
  3. </div>


teraz obrazek jest zapetlony i jedzie od lewe do prawej i odwrotnie. Jak zmienic ten kod aby dzialal tak jak opisujesz? Nie wiem jak zmienic javascript, aby przesunal pozycje do poczatku "przeskakujac" do do poczatkowej pozycji i wtedy Twoj sposob moglby zadzialac...
probowalem wstawić $('#ground').css({backgroundPosition: 'left bottom'}); i zresetowac pozycje do poczatku w animation2(), ale nie dziala.
Sugestie?
ayeo
Witam!

No zamiast tego callbacka animation2() zrób funkcję, która przesunie (bez animacji) obrazek o szerokość i odpali ponownie animation();



Pozdrawiam!
basu
  1. function animation2() {
  2. $('#ground').css({backgroundPosition: '(0px bottom)'});
  3. animation();
  4. }


w tym miejscu wlasnie sie zacialem i probuje pol dnia zmusic to do dzialania? Ten kod nie dziala, animacja idzie w jedna strone i staje w miejscu.
Moze masz jakis dzialajacy przyklad?
ayeo
Kod
$('#ground').css("background-position", "0px bottom");


Czytaj manual tongue.gif

Pozdrawiam!
basu
Dziekuje za Twoja pomoc smile.gif
rzecz w tym ze czytalem i dalej ne dziala. zatrzymuje sie i nie zmienia ani pozycji ani nie idzic od nowa. Dochodze od prawej do lewej i na tym sie konczy animacja sad.gif

  1. function animation() {
  2. $('#ground').animate({backgroundPosition: '(-500px bottom)'}, 10000);
  3. animation2();
  4. }
  5.  
  6. function animation2() {
  7. $('#ground').css({backgroundPosition: '0px bottom'});
  8. animation();
  9. }
ayeo
Witam!

Chyba nie czytałeś mojego posta :/

Pozdrawiam!
basu
No to kolega daje mi do myslenia smile.gif
No to naprawde nie wiem gdzie popelniam blad sad.gif

jak zrobic zamiast callbacka animation2() zrobic funkcję, która przesunie (bez animacji) obrazek o szerokość i odpali ponownie animation(). Moze tutaj? Tylko nie mam pojecia jak...

ani zadne wariacje backgroundPosition tez nie dzialaja np:

  1. function animation2() {
  2. $('#ground').css({backgroundPosition: '0 0'});
  3. animation();
  4. }


Pozdrawiam!
ayeo
Witam!

Spójrz na swój kod i spójrz na mój!

Pozdrawiam!
basu
OK, nie zauwazylem tongue.gif

Dalej nie dziala... Zmienilem na cos takiego, ale tez bez powodzenia

  1. $(document).ready(function(){
  2. animation();
  3. setTimeout("animation2", 1000);
  4. });
  5.  
  6. function animation() {
  7. $('#ground').animate({backgroundPosition: '(-500px bottom)'}, 1000);
  8. }
  9.  
  10. function animation2() {
  11. $('#ground').css("backgroundPosition", "0px bottom");
  12. animation();
  13. }
ayeo


edit: i daj to jako callback, powywalaj te setTimeout!!
basu
  1. $(document).ready(function(){
  2. animation();
  3. });
  4.  
  5. function animation() {
  6. $('#ground').animate({backgroundPosition: '(-500px bottom)'}, 10000);
  7. animation2();
  8. }
  9.  
  10. function animation2() {
  11. //$('#ground').animate("background-position", "0 bottom");
  12. //$('#ground').css("background-position", "0px bottom");
  13. $('#ground').animate({backgroundPosition: '(0px bottom)'});
  14. animation();
  15. }


widac teraz nieladne przesuniecie: $('#ground').animate({backgroundPosition: '(0px bottom)'});
wogole nie lapie: $('#ground').css("background-position", "0px bottom");
ayeo
Witam!

JAKO CALLBACK MASZ DAĆ ANIMATION2();

Pozdrawiam!
basu
  1. $(document).ready(function(){
  2. animation();
  3. });
  4.  
  5. function animation() {
  6. $('#ground').animate({backgroundPosition: '(-500px bottom)'}, 10000, '', animation2);
  7. }
  8.  
  9. function animation2() {
  10. $('#ground').css("background-position", "0px bottom");
  11. animation();
  12. }


dziala smile.gif smile.gif


// no! tongue.gif
// ayeo
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.