2011-02-03 2 views
11

jQuery : 텍스트 이동없이 div의 너비를 애니메이션하는 방법이 있습니까?

$('div#foo').animate({width: 0},someSpeed); 

이 줄어들고있어하는 동안, 텍스트가 계속 얇은 div에 맞게 리플 로우 :

나는이처럼 div의 폭을 축소하기 위해 jQuery를 사용하고 있습니다. 나는이 일이하고 싶지 않아 - 폭이 감소함에 따라 당신이 $('div#foo').slideUp()을 할 경우 어떻게 나는, 그냥보기에서 사라지고, 그대로 텍스트가 있고 싶어.

의 의

CSS의 트릭이나이 일을 몇 가지 다른 방법이 있나요?

+0

OT : 너비가 0에 도달 한 후 텍스트 내용을 다시 표시하려면 어떻게해야합니까? 텍스트를 숨기려면'.hide (0)'을 사용해야합니다. http://jsfiddle.net/AvYyT/ –

+0

@ Šime Vidas - 저는 원래이 작업을 수행 했었지만, 제 질문에 대해 간단하게했습니다. '$ (this) .css ('display', 'none');});'$ (this) 애니메이션이 끝나면 표시가 없음으로 설정됩니다. –

답변

9

라이브 데모 :http://jsfiddle.net/AvYyT/1/

트릭 내부 용기를 사용하여 외부 용기의 너비와의 세트이다.

+1

그래, 그가 찾고있는 것 같다. 유명한. –

-1

가 귀하의 사업부의 CSS에서 vertical-align:top

+0

아무 것도 변경하지 않았습니다. –

+1

짐작 하시겠습니까? 응답이 확실한 경우에만 답변을 게시하십시오. –

0

을 제공하려고 사용 : overflow-x: hidden; overflow-y: hidden;

+0

아무 것도 변경하지 않았습니다. –

+1

@David 당신이 추측하는 경우, 의견에 맞춰보세요. 응답이 확실한 경우에만 답변을 게시하십시오. –

+2

@ Šime, 그가 의미하는 바가 무엇이든 그가 '상당히 확실한'것이 아니라는 것을 어떻게 알 수 있습니까? 당신은 당신이 StackOverflow 괴롭히는 사람이라는 것을 알지, 그렇지? – Dutchie432

3

당신의 div의 함께 할 콘텐츠의 폭을 설정하기 위해 jQuery를 사용하는 경우에만 다음 div과에 overflow:hidden을 추가 할 수 있습니다 너비를 줄이십시오.

같은 뭔가 (테스트되지 않은, 오타가 있지만, 당신은 아이디어 ... 얻을 수) : 그 안에 이미지가있는 경우,이 작동하지 않을

var el = $('div#foo'); 
el.children().each(function() { 
    $(this).width(el.width()); 
}); 
el.css('overflow', 'hidden').animate({width: 0}, someSpeed); 

을하지만 그것은 div의 내용에 따라 달라집니다 .

+0

자식 너비를 부모 너비의 정확한 값으로 설정하는 것은 안전하지 않습니다. 자녀가 여백, 여백 및/또는 국경을 가졌다면, 그 어린이는 넓어 질 것입니다. 여기를보십시오 : http://jsfiddle.net/AvYyT/3/. 이 문제를 해결하기 위해서는 $ (this) .outerWidth (true) - $ (this) .width()'차이를 빼야합니다. http://jsfiddle.net/AvYyT/4/ –

+0

@ Šime Vidas : 내가 말했듯이, 그것은 div의 내용에 달려있다. 나는 코드 샘플을 가지고 그 아이디어를 설명하고있을 뿐이다. – jeroen

3

하나의 옵션은 div에서 white-space: nowrap;을 사용하는 것입니다. 유일한 문제는 긴 텍스트 본문이있는 경우 수동으로 줄 바꿈을 추가해야한다는 것입니다.

+0

이것은 max-width와 함께 작동합니다.이 경우'overflow : auto'도 사용할 수 있으며 추가 요소가 필요하지 않습니다. – chad

+0

긴 텍스트가 있고 텍스트가 다이나믹 인 경우 어떻게 할 수 있습니까 –

+0

@jitendravarshney 다른 질문이있는 경우 새로운 질문을하는 것이 가장 좋습니다 –

관련 문제