2011-08-03 3 views
0

jQuery와 함께 애니메이션 navbar를 함께 던지고 있었고, 달성하려는 대상에 대해 많은 js처럼 보였습니다. 누구나이 효과에 대해 더 우아한 해결책을 알고 있었습니까?jQuery 가능성이 부풀어 오른 코드

라이브 사이트 :

http://daveywhitney.com/nav/2/

jQuery를

$(document).ready(function() { 

    $("#topnav li").prepend("<span></span>"); 

    $("#topnav li").each(function() { 
     var linkText = $(this).find("a").html(); 
     $(this).find("span").show().html(linkText); 
    }); 

    $("#topnav li").hover(function() { 
     $(this).find("span").stop().animate({ 
      marginTop: "-45" 
     }, 250); 
    } , function() { 
     $(this).find("span").stop().animate({ 
      marginTop: "0" 
     }, 250); 
    }); 

}); 

답변

3

그냥 이미지 스프라이트와 background-position를 사용하여 CSS에서 그것을 할. 그러면 모든 jQuery가 삭제됩니다.

+0

브라우저 호환성에 대해 걱정할 필요는 없지만 확인해 보겠습니다. 아니면 .... – Davey

+0

IE6 +에서 지원되며 CSS2.1 사양의 일부입니다. –

1

당신이 1 개 루프를 건너 뛸 수 있습니다 :

$(document).ready(function() { 

    $("#topnav li").html(function(){ 
     var $obj= $(this); 
     $obj.prepend('<span>'+$obj.find('a').html()+'</span>'); 
    }); 



    $("#topnav li").hover(function() { 
     $(this).find("span").stop().animate({ 
      marginTop: "-45" 
     }, 250); 
    }, function() { 
     $(this).find("span").stop().animate({ 
      marginTop: "0" 
     }, 250); 
    }); 

}); 

Click Here

을하지만 앤드류 공작으로뿐만 아니라 동의, 나는 같은 텍스트를 떠나 그냥 배경을 변경, 스프라이트에서 같은 애니메이션을 사용합니다 위치. 따라서 텍스트를 복제하기 위해 1 루프를 건너 뜁니다.

2

코드가 복잡하거나 우아하지 않습니다.
그러나 다른 접근 방식을 원할 경우 css3 애니메이션을 사용해 볼 수 있습니다.
Here is a live example 효과없이 j가 전혀 없습니다.
희망이 있습니다.

+0

이것은 완전히 끝내 주지만 애니메이션이 완료된 후 왜 다시 빨간색으로 전환됩니까? – Davey