2012-09-29 17 views
27

Ebeveyn div ve komşu div yeterli alana izin vermediğinde, herhangi bir şekilde yüzer bir div gain elipsinde metin olup olmadığını merak ediyorum. Örneğin: Değişken genişlik div'ları kullanıldığında CSS text ellipsis

<style> 
.parent-div { 
    width: 100%; 
    border: 1px; 
    padding: 4px; 
} 
.text-div { 
    float: right; 
    white-space: nowrap; 
    overflow: hidden; 
    text-overflow: ellipsis;  
} 
.icon-div { 
    float: left; 
} 
</style> 
<div class="parent-div"> 
    <div class="text-div">This is text I'd like to truncate when space doesn't permit</div> 
    <div class="icon-div">X</div> 
</div> 

Şimdiye kadar tarayıcı penceresini crunch eğer, üst div sonra metin div beyaz boşluk yok olacak, çökecek, ancak daha fazla yer yok olduğunda, üç nokta tekme olmadı.

Yapabileceğim tek şey, pencerenin yeniden boyutlandırılması ve dinamik olarak yeni bir sabit genişliğin metin-div olarak ayarlanması durumunda bir olayı tetiklemesidir, ancak bu sadece özellikle de dolgu ve diğer komşu eşyalar gibi uygun genişlik elde etmek için çıkartın.

Bunun hakkında herhangi bir düşünce var mı?

İşte jsFiddle demo: http://jsfiddle.net/Blender/kXMz7/

+1

Eğer eski tarayıcıları destekleyen umurumda değil, bu oldukça basit hale getirmek için flexbox'a kullanabilirsiniz. net/Blender/kXMz7/1/ – Blender

+0

Mükemmel Blender çalışıyor! Aktif olarak eski tarayıcıları desteklemiyorum, bu yüzden iyi çalışıyor. :) Görünüşe göre bir masanın içine konduğunda işe yaramıyor, ama bu konuda çalışabilirim. Teşekkürler! Cevabınızı ayrı ayrı yayınlarsanız, doğru olanı işaretlerim. – Anthony

cevap

52
Oldukça sezgisel bunu CSS3 esnek kutu düzenini kullanabilirsiniz

:

.parent-div { 
    display: flex; 
} 

.text-div { 
    white-space: nowrap; 
    overflow: hidden; 
    text-overflow: ellipsis;  

    min-width: 0; 
} 

.icon-div { 
    flex: 1; 
}​ 

Demo: http://jsfiddle.net/Blender/kXMz7/1/

+0

Mükemmel çalışıyor! Teşekkürler Blender! Çözüm mükemmel olarak – Anthony

+1

+1 çalışır. Esnek Kutu Yerleşiminin hala Aday Öneri aşamasında olduğunu ve yaygın olarak desteklenmediğini unutmayın. Bu satıcı önek ile krom, firefox, safari çalışacaktır. Internet Explorer, yalnızca IE10'da bu özelliği desteklemeye başladı. http://caniuse.com/flexbox – Michael

+0

Bu cevabı bir süredir arıyordum! Thanks :-) – Rikki

10

Şirketim henüz CSS3 desteklemiyor ama sorunu başka bir çözümle çözebildim. float özniteliğini yalnızca simge div'ına uygulayarak ve ilk olarak HTML'ye koyduğunuzda, diğer div dikey konumda kalacak ve aynı zamanda yeterli alan olmadığı zaman kesilecektir.

Örnekler: http: // jsfiddle http://jsfiddle.net/qftWN/ (sağda simgesi), (solda simgesi) http://jsfiddle.net/Nr2NN/

+1

Teşekkür ederim! Bu düzgün numara işe yarıyor ve bana çok fazla sorun yaratıyor. :) – gnclmorais

+0

çok teşekkür ederim! – user1110977

İlgili konular