2011-09-07 4 views
1

JQuery 애니메이션 메뉴 작업을하고 있습니다. 이것은 내 질문에 관한 코드의 일부일뿐입니다.JQuery와 CSS를 사용하여 이미지 공개 background-position : jitters (firefox 제외) + 백분율 수수께끼

저는 (JQuery를 사용하여) 움직이는 div가 많아서 좌우로 확장됩니다. div에서 배경 이미지를 사용하고 div가 확장되고 축소 될 때 이미지가 움직이지 않도록 유지하려고합니다.

여기에 (작동하는) 완전한 예제가 있습니다.이를 시도하려면 .html로 저장하십시오. (당신은 어떻게 든 유래이 첨부 할 수 있습니까?) 당신을 위해

http://jsbin.com/eyojah

<!DOCTYPE html> 
<html> 
    <head> 
     <title>JQuery Jitter Bug</title> 
     <script src="http://code.jquery.com/jquery-latest.js"></script> 
     <style> 
      body { background: #0f1923; margin:0px; padding:0px;} 
      div#logo { 
       border: 0px; 
       margin: 0px; 
       padding: 0px; 
       background-image: url("http://static.jquery.com/files/rocker/images/logo_jquery_215x53.gif"); 
       background-position:20%; 
       position: absolute; 
       height: 53px; 
       left: 100px; 
       width: 100px; 
       top: 50px; 
      } 
     </style> 
    </head> 
    <body> 
     <div id="logo"></div> 
     <script> 
      $('div#logo').mouseenter(function(){$(this).animate({left: "0px", width: "600px"}, 1000); }); /* show */ 
      $('div#logo').mouseleave(function(){$(this).animate({left: "100px", width: "100px"}, 1000); }); /* crop */ 
     </script> 
    </body> 
</html> 

두 질문 :

1) 어떻게 그 배경 포지션 비율이

을 계산합니까? 시행 착오를 통해 20 %가 정확하다는 것을 알 수 있습니다. div는 펼치면 왼쪽 = 0, 너비 = 600 픽셀, 축소하면 왼쪽 = 100, 너비 = 100입니다. 그게 어떻게 20 %가되는거야? 축소 된 크기 (100/600 = 16.666 %?)의 왼쪽 가장자리가 아니어야합니다. 분명히 아니지만 왜 그렇지 않습니까?

2) 파이어 폭스에서는 보이지 않지만 파이어 폭스처럼 보이지만 Safari와 Chrome에서는 (애니메이션이 켜져 있습니다.) 애니메이션이 진행될 때 이미지가 흔들립니다. 다른 브라우저에서 더 잘 보이도록 수정하는 방법에 대한 아이디어가 있습니까?

+0

'시행 착오로 20 %가 정확하다는 것을 보여줍니다. "- 무슨 뜻입니까? 20 %는 어떤 의미로 정확합니까? 고정시키는 데있어 배경 위치 픽스 애니메이션의 고정 단위 (예 : px) 값 – WTK

+0

아, 또 하나,'.animate'를하기 전에'.stop()'을 추가하는 것이 좋을 것입니다. 그렇지 않으면 여러개의 빠른 롤오버를 할 때 애니메이션은 X 번 발사 될 것이고 컨테이너는 성장하고 줄어들 것입니다. – WTK

+0

http://jsbin.com/eyojah에서 예제를 게시 한 Martin B.에 대한 찬사 – PapaFreud

답변

0

많은 것을 시도했지만 결국이 버전으로 끝납니다 : http://jsfiddle.net/NC2pq/ Chrome 13.0.782.215 및 Firefox v6 (Ubuntu에서)에서 제대로 작동합니다.

처음에는 배경 위치에 고정 값을 설정하고이 속성에 애니메이션을 적용하려했지만 일반 jQuery를 사용하여 backgroundPosition을 애니메이션으로 만들 수는 없습니다 (일부 플러그인은 찾았지만 didn '그 생각을 따르지 마라').

결국 나는 쉽게 움직일 수있는 다른 컨테이너를 만들어야했습니다.

물론 개념의 증거 일뿐입니다. 실제 사용은 우리가 처리하고있는 상황에 따라 성능 및 프리젠 테이션을 조정해야합니다.