metin taşması: üç nokta çalışmıyor


264

Bu denedim ( buraya bakın ):

body {
    overflow: hidden;
}

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
}

Aslında, pencere küçük yapıldığında açıklığın üç nokta ile küçülmesini istiyorum. Neyi yanlış yaptım?


6
üç nokta çalışması için gereksinimler: stackoverflow.com/a/33061059/3597276
Michael Benjamin

Çalışmadığını düşündüğümde yaşadığım sorun, genişliği yeterince uzun ayarlamamıştım (10 piksel). Bu yüzden üç nokta kesiyordum, doh!
Çubuk

Yanıtlar:


459

CSS overflow, width(veya max-width) display, ve özelliklerine sahip olmanız gerekir white-space.

http://jsfiddle.net/HerrSerker/kaJ3L/1/

span {
    border: solid 2px blue;
    white-space: nowrap;
    text-overflow: ellipsis;
    width: 100px;
    display: block;
    overflow: hidden
}

Ek Çizgi kenetleme tekniklerine genel bir bakış istiyorsanız (Çok Satırlı Taşma Elipsleri), şu CSS-Püf Noktaları sayfasına bakın: https://css-tricks.com/line-clampin/

Ek2 (Mayıs 2019)
Bu bağlantıda iddia edildiği gibi Firefox 68 destekleyecek -webkit-line-clamp(!)


12
Beyaz boşluk özelliği ne eksikti. Teşekkürler.
nebulousGirl

65
white-space: nowrap;Özelliği ihtiyacınız berbat . Artık bir metin satırını blok metni yerine ... ile bitirebilirsiniz.
Sven van Zoelen

3
Bugün, tüm büyük tarayıcılar üç nokta destekliyor: caniuse.com/#feat=text-overflow
kazy

1
@basZero Multiline Ellipsis yalnızca CSS ile desteklenmez. Diğer önlemleri
almalısınız

1
Konteynerin bağlanması için bir genişlik belirtmeniz gerekir, taşma ayarlamanız gerekir: gizli, tarayıcının çalışma metnini gizleyecek ve daha sonra metin taşması: elips şeklinde tarayıcıya özellikle metin taşma gizlemesinin nasıl ele alınacağını bildirecek.
Michael Angstadt

46

Bir blok öğeniz, maksimum boyutunuz olduğundan ve taşmayı gizli olarak ayarladığınızdan emin olun. (IE9 ve FF 7'de test edilmiştir)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}

5
Beyaz boşluk gibi görünüyor: nowrap özelliği, boşluklu herhangi bir şey için de genellikle gerekli olabilir.
Kzqai

Yukarıdaki yorumun tam kopyası.
nebulousGirl

@nebulousGirl: Aslında Kzqai'nin yorumu HerrSerker'in yorumlarında yayınlananlardan daha önceydi.
lepe

IE'de tuhaflık var - IE ikinci bir kelimeyi sarmıyor (IE 11'de test edildi) ... Git şekil. Beklendiği gibi diğer tarayıcılarda çalışır (eski eski Opera 12 dahil).
Nux

1
@Nux Bu ayrıca MS Edge tarayıcısında beklendiği gibi çalışmıyor
yunzen

21

Chrome'da çok satırlı kullanım için:

display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; // max nb lines to show
-webkit-box-orient: vertical;

Youtube'dan ;-) esinlenerek


Bu çok ilginç bir çözüm. Özellikleri kullanır -webkit-*, ancak tüm büyük tarayıcılarda desteklenir. Daha fazla bilgi burada bulunabilir: css-tricks.com/almanac/properties/l/line-clamp
dkniffin

5

Krom altında üç nokta ile ilgili bir sorunum vardı. Beyaz alanı açmak: nowrap bunu düzeltiyor gibiydi.

max-width: 95px;
max-height: 20px;
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
border: solid 1px black;
font-size: 12pt;
text-align: right;
white-space: nowrap;

4
word-wrap: break-word;

bu ve sadece bu benim için bir iş yaptı

<pre> </pre> 

etiket

başka her şey üç nokta yapamadı ....


3

Sadece bununla karşılaşabilecek herkes için bir kafa ... H2'm miras alıyordu

text-rendering: optimizelegibility; 
//Changed to text-rendering: none; for fix

bu üç noktaya izin vermiyordu. Görünüşe göre bu çok şık değil mi?


2

Beğendiğiniz yere aşağıdaki kodu ekleyin

misal

p{
   display: block; /* Fallback for non-webkit */
   display: -webkit-box;
   max-width: 400px;
   margin: 0 auto;
   -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
   overflow: hidden;
   text-overflow: ellipsis;
 }

2

Birden fazla hat için

Chrome'da, birden fazla satıra üç nokta uygulamanız gerekiyorsa bu css'yi uygulayabilirsiniz.

Ayrıca , belirli genişlikteki öğeyi belirtmek için css'nize genişlik de ekleyebilirsiniz :

.multi-line-ellipsis {
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
<p class="multi-line-ellipsis">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>


1

CSS'ye aşağıdakileri ekleyerek üç nokta kullanmayı deneyebilirsiniz:

.truncate {
  width: 250px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

Ama bu kod sadece tek satırlık düzeltme için geçerli gibi görünüyor. Metni kırpmanın ve üç nokta göstermenin diğer yollarını bu web sitesinde bulabilirsiniz: http://blog.sanuker.com/?p=631


0

Elipsin çalışması için CSS'ye aşağıdaki satırları ekleyin

 p {
     display: block; // change it as per your requirement
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }

0

Bu bizler için sabit genişlik kullanmak istemiyorsanız , o da kullanarak çalışır display: inline-grid. Yani gerekli özelliklerin yanı sıradisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.