페이드 인 효과가있는 요소 추가 [jQuery]


121
var html = "<div id='blah'>Hello stuff here</div>"

$("#mycontent").append(html).fadeIn(999);

이것은 작동하지 않는 것 같습니다.

콘텐츠가 추가 될 때 멋진 효과를 원합니다.

참고 : 전체 "mycontent"가 아닌 새로운 "blah"div 만 페이드 인하기를 원합니다.


답변:


262
$(html).hide().appendTo("#mycontent").fadeIn(1000);

1
새로운 "blah"div 만 페이드 인하기를 원합니다.
TIMEX 2011 년

@TIMEX : 이것이해야 할 일입니다.
icktoofay

먼저 숨기고 추가하는 이유가 있습니까 (DOM에 연결하기 전에 먼저 스타일을 설정하는 것이 더 빠르기 때문입니다), 아니면 차이가 없습니까?
qwertymk

2
@qwertymk : 진짜 이유는 없습니다. DOM이 여전히 조작되는 동안 브라우저가 렌더링 된 경우 (현재 내가 아는 한 브라우저가 수행하지 않음) 페이드 인을 시작하기 전에 콘텐츠가 깜박이지 않을 것입니다. 다시 말하지만 실제로는 중요하지 않습니다.
icktoofay 2011 년

1
@ArthurTarasov : 그것은 #blah당신이하고 싶은 일처럼 보이지 않는 그 자체에 추가 됩니다. (그리고 나는 그것이 작동하지 않는 것으로 해석되는 것 같아요). .appendTo부품을 떨어 뜨리고 $('#mycontent').hide().fadeIn(1000).
icktoofay

52

더 많은 정보 추가 :

jQuery는 "메서드 체인"을 구현합니다. 즉, 동일한 요소에 대한 메서드 호출을 체인 할 수 있습니다. 첫 번째 경우 :

$("#mycontent").append(html).fadeIn(999);

fadeIn이 경우 메서드 체인의 대상인 개체에 호출을 적용합니다 #mycontent. 당신이 원하는 것이 아닙니다.

@icktoofay의 (위대한) 대답에는 다음이 있습니다.

$(html).hide().appendTo("#mycontent").fadeIn(1000);

이것은 기본적 수단은 생성을 html기본으로 숨겨진, 추가로,로 설정 #mycontent하고 다음 페이드 그것에.있어서 체인의 타겟 지금 hmtl대신 #mycontent.


18

이것은 또한 작동합니다

$(Your_html).appendTo(".target").hide().fadeIn(300);

문안 인사


이것은 HTML이 완전히 구성되고 페이드 인 전에 필요한 크기를 생성 할 수 있도록하므로 페이드 인을 처리하는 가장 미학적으로 즐거운 방법입니다.
Antonio Nogueras

0

fadeIn은 숨기기에서 표시로의 전환이므로 추가 할 때 "html"요소를 숨긴 다음 표시해야합니다.

var html = "<div id='blah'>Hello stuff here</div>"

$("#mycontent").append(function(){
  return html.hide();
});

$('#blah').fadeIn(999);

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.