Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Efekt hover
Forum PHP.pl > Forum > Przedszkole
pantera366
Witam jest sobie takie menu http://www.gmarwaha.com/blog/2007/08/23/la...-jquery-lovers/ z efektem poruszającej sie "lampy".Co należy zmienić w kodzie aby po najechaniu na dany link hover zatrzymał sie powiedzmy na 5sekund i po tym czasie odjechał.Chodzi mi o taki sam efekt jaki jest na stronie eduweb http://www.eduweb.pl/ .Jestem początkujący i nie wiem jak to ugryźć

  1.  
  2. <ul class="lavaLampWithImage" id="1">
  3. <li><a href="#">Home</a></li>
  4. <li><a href="#">Plant a tree</a></li>
  5. <li><a href="#">Travel</a></li>
  6. <li><a href="#">Ride an elephant</a></li>
  7. </ul>
  8.  



  1.  
  2.  
  3. (function($) {
  4. $.fn.lavaLamp = function(o) {
  5. o = $.extend({ fx: "linear", speed: 500, click: function(){} }, o || {});
  6.  
  7. return this.each(function() {
  8. var me = $(this), noop = function(){},
  9. $back = $('<li class="back"><div class="left"></div></li>').appendTo(me),
  10. $li = $("li", this), curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];
  11.  
  12. $li.not(".back").hover(function() {
  13. move(this);
  14. }, noop);
  15.  
  16. $(this).hover(noop, function() {
  17. move(curr);
  18. });
  19.  
  20. $li.click(function(e) {
  21. setCurr(this);
  22. return o.click.apply(this, [e, this]);
  23. });
  24.  
  25. setCurr(curr);
  26.  
  27. function setCurr(el) {
  28. $back.css({ "left": el.offsetLeft+"px", "width": el.offsetWidth+"px" });
  29. curr = el;
  30. };
  31.  
  32. function move(el) {
  33. $back.each(function() {
  34. $.dequeue(this, "fx"); }
  35. ).animate({
  36. width: el.offsetWidth,
  37. left: el.offsetLeft
  38. }, o.speed, o.fx);
  39. };
  40.  
  41. });
  42. };
  43. })(jQuery);
  44.  



Tutaj instrukcja która uruchamia skrypt

  1. <script type="text/javascript">
  2. $(function() {
  3. $("#1, #2, #3").lavaLamp({
  4. fx: "backout",
  5. speed: 700,
  6. click: function(event, menuItem) {
  7. return false;
  8. }
  9. });
  10. });
  11. </script>
  12.  


Te #1 #2 #3 tyczy sie wyboru danego efektu lava lamp(np prostokat albo sama kreska)

Liczę na waszą pomoc.pozdrawiam
potreb
Zmień wartosć speed na większą
pantera366
dzięki za rade ale chodzi mi o to żeby nie zmieniać prędkości.zresztą ,musiałbym dać pewnie ok 2700 a wtedy hover idzie za wolno a i tak by nie czekał tylko powoli odjeżdżał .Musi być inne mniej inwazyjne rozwiązanie
Damonsson
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. $(function() {
  3. $("#1, #2, #3").lavaLamp({
  4. fx: "backout",
  5. speed: 700,
  6. click: function(event, menuItem) {
  7. return false;
  8. }
  9. });
  10. });
  11. </script>
[JAVASCRIPT] pobierz, plaintext


fx: "backout" - tak masz u siebie.

Zobacz jakie są inne możliwości w tym pliku:
http://gsgd.co.uk/js/jquery.easing.1.1.js

easein, easeinout itd.

i podmieniaj sobie każdą zamiast Twojego "backout"

np.:

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. $(function() {
  3. $("#1, #2, #3").lavaLamp({
  4. fx: "easein",
  5. speed: 700,
  6. click: function(event, menuItem) {
  7. return false;
  8. }
  9. });
  10. });
  11. </script>
[JAVASCRIPT] pobierz, plaintext


Któraś funkcja może będzie odpowiadać Twoim wymaganiom, a jeśli nie, sam napisz odpowiednią funkcję.

Na mojego nosa, będzie coś w stylu: "elasinout" albo "bounceinout"
pantera366
dzięki Damonsson,trochę mi to rozjaśniło sytuacje.Czyli prawdopodobnie trzeba zmienić jakiś parametr w

  1.  
  2. jQuery.easing={easein:function(x,t,b,c,d){return c*(t/=d)*t+b},easeinout:function(x,t,b,c,d){if(t<d/2)return 2*c*t*t/(d*d)+b;var a=t-d/2;return-2*c*a*a/(d*d)+2*c*a/d+c/2+b},easeout:function(x,t,b,c,d){return-c*t*t/(d*d)+2*c*t/d+b},expoin:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}return a*(Math.exp(Math.log(c)/d*t))+b},expoout:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}return a*(-Math.exp(-Math.log(c)/d*(t-d))+c+1)+b},expoinout:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}if(t<d/2)return a*(Math.exp(Math.log(c/2)/(d/2)*t))+b;return a*(-Math.exp(-2*Math.log(c/2)/d*(t-d))+c+1)+b},bouncein:function(x,t,b,c,d){return c-jQuery.easing['bounceout'](x,d-t,0,c,d)+b},bounceout:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},bounceinout:function(x,t,b,c,d){if(t<d/2)return jQuery.easing['bouncein'](x,t*2,0,c,d)*.5+b;return jQuery.easing['bounceout'](x,t*2-d,0,c,d)*.5+c*.5+b},elasin:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b},elasout:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},elasinout:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},backin:function(x,t,b,c,d){var s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},backout:function(x,t,b,c,d){var s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},backinout:function(x,t,b,c,d){var s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},linear:function(x,t,b,c,d){return c*t/d+b}};
  3.  
  4.  
  5.  


to jest dołączone do tego skryptu tylko co i jak to ja za bardzo nie wiem,nie mogę się w tym połapać
pantera366
Cytat(Damonsson @ 18.01.2011, 19:20:51 ) *
<script type="text/javascript">
$(function() {
$("#1, #2, #3").lavaLamp({
fx: "backout",
speed: 700,
click: function(event, menuItem) {
return false;
}
});
});
</script>

TYLKO TĘ LINIJKĘ ZMIENIASZ.
na:
fx: "elasinout"
albo fx: "bounceinout"
albo jakieś inne które Ci pasuje z tego pliku .js który Ci podałem wyżej.



tak zgadza się to już próbowałem i to rzeczywiście daje rożne efekty ale nie ma takiego żeby hover stal przez te 5 sekund.Pozostaje mi nauka jezyka jquery i napisanie samemu takiego skryptu.
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.