Autor | Zpráva | ||
---|---|---|---|
Body Profil * |
#1 · Zasláno: 17. 9. 2010, 12:06:36
Ahoj,
môžete mi poradiť, ako cez js alebo jQeury spravim aby sa stranka plynule scrollovala keď kliknem napr, na url#body z menu. diky. |
||
whysper93 Profil |
#2 · Zasláno: 17. 9. 2010, 14:59:50
Ahoj, nedávno jsem toto řešil a našel jsem toto:
$("html, body").animate({scrollTop: 0}, 500 $("html, body").animate({scrollTop: pozice}, delka animace v ms); |
||
Radek9 Profil |
#3 · Zasláno: 17. 9. 2010, 15:03:16 · Upravil/a: Radek9
Pokud to teda má být v jQ, tak můžeš použít moji funkci:
$.fn.scrollTo = function(t){ $("html, body").animate({scrollTop: $(this).offset().top+"px"}, t); } //Použití: $("#id").scrollTo(1000); |
||
Body Profil * |
#4 · Zasláno: 18. 9. 2010, 19:10:24
diky za odpovede.
asi mam nieco zle alebo som to zle pochopil, ale mi to nejde. <li><a href="ponuka.html" onclick="$('#id').scrollTo(1000);">Ponuka</a></li> v tagu head mam: <script type="text/javascript"> $.fn.scrollTo = function(t){ $("html, body").animate({scrollTop: $(this).offset().top+"px"}, t); } </script> |
||
Radek9 Profil |
#5 · Zasláno: 18. 9. 2010, 19:37:32
Body:
Kdyžtak to zkus dát ještě do onload ( $(document).ready() ), ale pokud to nepomůže, tak už nevím.
|
||
Chamurappi Profil |
#6 · Zasláno: 19. 9. 2010, 06:00:06
Reaguji na Bodyho:
„mi to nejde“ Asi bys měl ještě stornovat výchozí chování při kliknutí na odkaz, tedy return false .
Bez té frameworkové koule na noze by to šlo udělat přibližně takhle: function narolujNa(element) { var pozice = element.getBoundingClientRect().top; var posun = Math.round(Math.abs(pozice) > 1 ? pozice / 5 : pozice); window.scrollBy(0, posun); if(pozice - element.getBoundingClientRect().top) setTimeout(function() { narolujNa(element) }, 30); } Reaguji na Radka9: „Kdyžtak to zkus dát ještě do onload“ Vidíš snad, že by se tam vykonávalo něco, co je závislé na načtenosti stránky? |
||
Body Profil * |
#7 · Zasláno: 19. 9. 2010, 12:55:13
Chamurappi:
Tak som skusil tvoju syntax ale tiez to nejde.. <li><a href="ponuka.html" onclick="narolujNa('#body'); return false">Ponuka</a></li> |
||
Časová prodleva: 6 dní
|
|||
Body Profil * |
#8 · Zasláno: 25. 9. 2010, 11:54:50
Radek9:
Uz mi to zacalo ist, len som prisiel na to, ze len to s udalostou onClick nejde.. ked dam onMouveOver tak ano. Nevies preco? |
||
Witiko Profil |
#9 · Zasláno: 25. 9. 2010, 19:05:34 · Upravil/a: Witiko
Chamurappi:
„Bez té frameworkové koule na noze“ +1 :) Body: „Tak som skusil tvoju syntax ale tiez to nejde..“ Přijde ti '#body' jako element? Mě připadá jako textový řetězec. :D |
||
Body Profil * |
#10 · Zasláno: 25. 9. 2010, 22:14:27
Witiko:
Ale ja som pouzil Radekove riesenie vis. |
||
Witiko Profil |
#11 · Zasláno: 26. 9. 2010, 00:30:33
Body:
„Ale ja som pouzil Radekove riesenie vis.“ Nevím. Mimochodem, Chamurappiho verze by ti fungovala. Jen ta funkce nebere jako argument jméno kotvy, ale samotný element. |
||
Body Profil * |
#12 · Zasláno: 27. 9. 2010, 13:08:50
Witiko:
ved skusam aj na element: onclick="narolujNa('div#content')" Neviem to nemozete proste napisat ako to ma vyzerat, ale ma takto natahovat. |
||
Chamurappi Profil |
#13 · Zasláno: 27. 9. 2010, 13:10:10
Reaguji na Bodyho:
„'div#content'“ To je pořád jen řetězec. Samotný element je pomocí ID dohledatelný třeba metodou document.getElementById('ídéčko') .
|
||
Body Profil * |
#14 · Zasláno: 27. 9. 2010, 13:42:18
do funkcie som pridal:
var el = document.getElementById(element); a potom onclick="narolujNa('content')" Ako nemozes to napisat proste ako to ma vyzerat hej? V JS len zacinam. |
||
Witiko Profil |
#15 · Zasláno: 27. 9. 2010, 13:54:47 · Upravil/a: Witiko
Body:
„Ako nemozes to napisat proste ako to ma vyzerat hej?“ "Mohu ti ukázat cestu, ale kráčet po ní už musíš sám." - alias - Pokud chceš hotová řešení, piš sem. V téhle sekci ti nikdo není povinován servírovat výsledný kód pod nos, nýbrž postrčit tě ke správnému řešení, přičemž se během toho ještě můžeš něco nového naučit. |
||
Chamurappi Profil |
#16 · Zasláno: 27. 9. 2010, 14:17:04
Reaguji na Bodyho:
V té funkci pak pracuj na řádcích 3 a 6 s el místo s element a mělo by to jet. Jestli ne, prosím o odkaz na živou ukázku.
„V JS len zacinam.“ Nemáš-li v úmyslu s ním i skončit, budou se ti nejspíš hodit zkušenosti, které nyní načerpáš. |
||
Body Profil * |
#17 · Zasláno: 27. 9. 2010, 16:43:55
Chamurappi:
okey, spravil som to takto: function narolujNa(element) { var el = document.getElementById(element); var pozice = el.getBoundingClientRect().top; var posun = Math.round(Math.abs(pozice) > 1 ? pozice / 5 : pozice); window.scrollBy(0, posun); if(pozice - el.getBoundingClientRect().top) setTimeout(function() { narolujNa(element) }, 20); } Zacina to fungovat, ale stale sa mi to vrati naspat :D Nascrolluje sa dole a potom to samo ide hore :D |
||
Chamurappi Profil |
#18 · Zasláno: 27. 9. 2010, 17:01:50
Reaguji na Bodyho:
Jestli to voláš z odkazu, musíš samozřejmě stornovat výchozí akci ( return false ), jinak se při kliknutí odkaz normálně proklikne. Co máš vlastně v href u? Tam bys měl odkázat na kotvu normálně, aby se dostali na správné místo i ti, kdo nemají JS, ne?
|
||
Body Profil * |
#19 · Zasláno: 27. 9. 2010, 17:09:40
Chamurappi:
aha som dal return false a uz mi to ide, diky moc! Len trocha trhavo to ide. |
||
Body Profil * |
#20 · Zasláno: 27. 9. 2010, 17:10:50
Body:
Ok uz mi to ide plynule som to upravil. |
||
Body Profil * |
#21 · Zasláno: 27. 9. 2010, 17:20:02
lenze teraz sa neda prekliknut v menu na dalsiu stranku :(
Ja to chcem aplikovat na menu, ze proste kliknem a ono mi nacita novy web ale pekne nascrolluje dole. |
||
Body Profil * |
#22 · Zasláno: 27. 9. 2010, 17:23:16
Body:
zacinam velmi spamovat :) takze ma napadlo toto: <body onload="narolujNa('body')"> a funguje to celkom, testujem. |
||
Časová prodleva: 14 let
|
0