2011-12-21 2 views
5

.appendTo()을 사용하여 요소의 DOM 위치를 수정하고 싶습니다. 이 작업이 완료되면 CSS3를 사용하여 요소를 애니메이션화해야합니다.jQuery를 사용하여 CSS3 애니메이션을 수행합니다 .appendTo

요소는 움직이지 않으며 대신 새로운 CSS 스타일로 스냅됩니다.

자바 스크립트 :

$(".run").click(function() { 
    $(".imageOriginal").appendTo(".insert").toggleClass("imageAnimated"); 
}); 

HTML :

<div class="insert"> </div> 
<img src="img/img1.png" class="imageOriginal"/> 

CSS :

.imageOriginal { 
    -webkit-transform: scale(0.1); 
} 
.imageAnimated { 
    -webkit-transition: all 1s ease-in-out;  
    -webkit-transform: scale(1); 
} 

내가이 (가) .appendTo().toggleClass() 방법은 두 가지 클릭 이벤트에 화재 분리. 이 방법은 효과적이지만 (분명히 바람직하지는 않습니다). 나는 또한 추가 후 .delay(1000)을 사용하여 시도했지만, 이것도 작동하지 않습니다.

+0

JQuery와 UI가 제공 : 여기

$(".run").click(function() { var $this = $(".imageOriginal"); $this.appendTo('.insert'); setTimeout(function() { $this.toggleClass("imageAnimated"); }, 0); }); 

데모입니다 .switchClass() 함수는 여기에 설명 된대로 작동합니다. http://stackoverflow.com/questions/1248542/jquery-animate-with -css-class-not-explicit-styles 스타일 – Stephen

+0

@Stephen CSS3 전환을 사용하기 위해 jQuery UI를 업데이트 했습니까? – Jasper

+1

@Stephen 손으로 코딩하기 쉬운 동작을 구현하는 단일 기능에 대해서만 전체 (비 대한 쓰레기) 라이브러리를 권장하지 마십시오. – Bojangles

답변

3

콘텐츠를 추가하고 동시에 클래스를 전환하는 것이 문제입니다. 당신이 .appendTo() 호출을 제거하면 그것을 잘 작동합니다 : 여기

$(".imageOriginal").toggleClass("imageAnimated"); 

데모입니다 : http://jsfiddle.net/38FrD/1/

내가 무슨 일이 일어나고 있는지 정말 모르겠어요하지만 당신은 방화범 이미지 요소를 볼 경우에 당신이 볼 수있는 transition 지속 기간이 지정되어 있어도 추가되는 속성의 지속 시간은 0s입니다.

.delay()은 대기열 (예 : .animate() 통화)에서만 작동합니다.

UPDATE 당신이 setTimeout 익명 함수 내부의 .toggleClass() 전화를 걸 경우가 원하는대로 작동하도록 나타납니다

: http://jsfiddle.net/38FrD/2/

+0

감사합니다. 노출 후 .delay()는 호출 후 어떤 방법이든 지연 될 것입니다. 아직이 문제를 해결할 방법이 확실하지 않은데 마지막 수단은 CSS3 대신 jquery .animate를 사용하는 것입니다. – jaredrada

+0

@ porfuse 그냥 궁금해서 다른 요소에 이미지를 추가하는 이유는 무엇입니까? 또한 나는 당신을 위해 일 해야하는 해결책으로 내 대답을 업데이 트했습니다. – Jasper

+0

클릭 한 이미지에는 다른 애니메이션이 포함되어 있으므로 ** 래퍼 (wrapper) 안의 이미지 그룹을 애니메이션으로 만들려고합니다. 결국 $ (this)를 사용하게 될 것입니다.클릭 한 이미지를 다른 div에 추가하여 대상을 지정하고 해당 이미지에 다른 애니메이션을 제공 할 수 있습니다. – jaredrada

관련 문제