2011-02-03 23 views
11

Bir div genişliğini küçültmek için jQuery kullanıyorum, şu şekilde:jQuery: Herhangi bir metin hareketi olmadan bir div genişliğini canlandırmak için bir yolu var mı?

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

Küçülüyor olsa da, metin daha da zayıflayan div'e sığacak şekilde yeniden akıtılıyor. Bunun olmasını istemiyorum - $('div#foo').slideUp() yaparsanız, metnin olduğu gibi kalmasını istiyorum, sadece genişlik azaldıkça görünümden kaybolacaktır.

Bu işi yapmak için bir CSS numarası mı yoksa başka bir yolu var mı?

+0

OT: Genişlik 0'a ulaştıktan sonra yeniden görüntülenen metin içeriğiyle nasıl baş edersiniz? Metni gizli tutmak için ".hide (0)" ifadesini kullanmalıyım - bkz. Http://jsfiddle.net/AvYyT/ –

+0

@ Šime Vidas - Aslında bunu aslında yaptım, ama sorumu basitleştirdim: '$ (this) .animate ({width: 0, opacity: 0}, hız, fonksiyon() {$ (this) .css ('display', 'none');});'. Böylece, animasyon ile bittiğinde, görüntüyü yok olarak ayarlar. –

cevap

9

Canlı tanıtım:http://jsfiddle.net/AvYyT/1/

numara, bir iç kap kullanmak ve dış kabın genişliğine ve yararını ayarlamaktır.

+1

Yup, bu onun aradığı şey gibi görünüyor. Kayıt edilmiş. –

-1

Elinden div BB'de vertical-align:top

+0

Hiçbir şey değişmedi. –

+1

Tahmin ediyorsanız, yorumu tahmin edin. Cevabınız, ancak çalıştığından emin olduğunuzda gönderin. –

0

vererek deneyin kullanım: overflow-x: hidden; overflow-y: hidden;

+0

Hiçbir şey değişmedi. –

+1

@David Tahmin ediyorsanız, bir yorumla tahmin edin. Cevabınız, ancak çalıştığından emin olduğunuzda gönderin. –

+2

@ Šime, bunun ne anlama geldiği, onun 'oldukça kesin' olmadığını nereden biliyorsunuz? Bir StackOverflow kabadayı olduğunu biliyorsun, değil mi? – Dutchie432

3

Sen, div ait olan içeriğin genişliğini ayarlamak için jQuery kullanmak ancak o zaman div ve overflow:hidden ekleyebilir genişliği azaltın.

gibi bir şey (denenmemiş, yazım hataları var ama fikir ... alabilir): İçinde resim varsa, bu işe yaramaz

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

Ama div içeriğine bağlıdır .

+0

Çocuk genişliğini üst genişliğin tam değerine ayarlamak güvenli değildir. Çocuğun doldurma, kenar boşlukları ve/veya sınırları varsa, çocuk geniş olacaktır, bakınız: http://jsfiddle.net/AvYyT/3/. Bununla başa çıkmak için, $ (this) .outerWidth (true) - $ (this) .width() 'farkını çıkarmanız gerekir, buraya bakın: http://jsfiddle.net/AvYyT/4/ –

+0

@ Šime Vidas: Söylediğim gibi, 'div' içeriğine bağlı, ben sadece bir kod örneği ile fikri gösteriyorum. – jeroen

3

div numaralı telefondan white-space: nowrap;'u kullanmak bir seçenek. Tek sorun, uzun bir metin gövdesine sahipseniz, satır sonlarını el ile eklemeniz gerekecek.

+0

Bu, maksimum genişlikte çalışır; bu durumda, 'overflow: auto' özelliğini de kullanmak isteyebilirsiniz ve ekstra öğe gerektirmez. – chad

+0

Uzun metne ve metne sahip olduğumuzda bunu nasıl yapabiliriz dianmic –

+0

@jitendravarshney Başka bir sorunuz varsa, yeni bir soru sormak en iyisidir –

İlgili konular