przepełnienie tekstu: elipsa nie działa

264

Oto, co próbowałem (patrz tutaj ):

body {
    overflow: hidden;
}

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

Zasadniczo chcę, aby rozpiętość zmniejszyła się z elipsą, gdy okno jest małe. Co zrobiłem źle?

Randomblue
źródło
6
wymagania dotyczące elipsy do pracy: stackoverflow.com/a/33061059/3597276
Michael Benjamin
Problem, który miałem, gdy myślałem, że to nie działa, to nie ustawiłem wystarczająco długiej szerokości (10 pikseli). Więc odcinałem elipsę, doh!
Rod

Odpowiedzi:

459

Musisz mieć CSS overflow, width(lub max-width) display, i 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
}

Dodatek Jeśli chcesz zapoznać się z technikami zaciskania linii (Elipsy przepełnienia wielowierszowego), zajrzyj na tę stronę sztuczek CSS: https://css-tricks.com/line-clampin/

Dodatek2 (maj 2019)
Jak twierdzi ten link , Firefox 68 będzie obsługiwał -webkit-line-clamp(!)

Junzen
źródło
12
Brakowało mi własności białej przestrzeni. Dzięki.
nebulousGirl
65
Bani, że potrzebujesz white-space: nowrap;nieruchomości. Teraz możesz tylko jeden wiersz tekstu kończył się na ... zamiast tekstu blokowego.
Sven van Zoelen,
3
Dzisiaj wszystkie główne przeglądarki obsługują ellipsis: caniuse.com/#feat=text-overflow
kazy
1
@basZero Multiline Ellipsis nie jest obsługiwany tylko z CSS. Musisz podjąć inne środki
Junzen
1
Musisz określić szerokość, aby kontener był związany, musisz ustawić przepełnienie: ukryte, aby przeglądarka ukryła tekst nadpisany, a następnie ustawić przepełnienie tekstu: elipsa, aby instruować przeglądarkę, jak szczególnie radzić sobie z ukrywaniem przepełnienia tekstu.
Michael Angstadt
46

Upewnij się, że masz element bloku, maksymalny rozmiar i ustaw przelew na ukryty. (Testowane w IE9 i FF 7)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}
ZippyV
źródło
5
Wygląda na to, że ta biała spacja: właściwość nowrap może być również ogólnie potrzebna, do wszystkiego ze spacjami.
Kzqai
Dokładna kopia powyższego komentarza.
nebulousGirl
@nebulousGirl: tak naprawdę komentarz Kzqai był wcześniejszy niż komentarz zamieszczony w komentarzach HerrSerkera.
lepe 10.10.2013
Dziwactwo w IE - IE nie zawija drugiego słowa (testowane w IE 11) ... Idź rysunek. Działa w dowolnej innej przeglądarce zgodnie z oczekiwaniami (w tym starej dobrej Operze 12).
Nux
1
@Nux To również nie działa zgodnie z oczekiwaniami w przeglądarce MS Edge
Junzen
21

W przypadku wielu linii w Chrome użyj:

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

Inspirowany youtube ;-)

Arraxas
źródło
To bardzo ciekawe rozwiązanie. Używa -webkit-*właściwości, ale jest obsługiwany we wszystkich głównych przeglądarkach. Więcej informacji można znaleźć tutaj: css-tricks.com/almanac/properties/l/line-clamp
dkniffin
5

Miałem problem z elipsą pod chromem. Włączanie białych znaków: teraz wydawało się, że teraz to naprawić.

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;
Joel
źródło
4
word-wrap: break-word;

to i tylko to wykonało dla mnie pracę

<pre> </pre> 

etykietka

wszystko inne nie wykonało elipsy ....

aimiliano
źródło
3

Tylko heads-up dla każdego, kto może natknąć się na to ... Moja h2 dziedziczyła

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

co nie pozwalało na elipsę. Najwyraźniej to bardzo wybredna prawda?

Ben Racicot
źródło
2

Dodaj ten kod poniżej, gdzie chcesz

przykład

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;
 }
Satish
źródło
2

Dla wielu linii

W chrome możesz zastosować ten css, jeśli chcesz zastosować wielokropek na wielu liniach.

Możesz także dodać szerokość w swoim css, aby określić element o określonej szerokości:

.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>

Raman Sahasi
źródło
1

Możesz spróbować użyć wielokropka, dodając następujące elementy w CSS:

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

Ale wygląda na to, że ten kod dotyczy tylko przycinania jednowierszowego. Więcej sposobów przycinania tekstu i wyświetlania wielokropka można znaleźć na tej stronie: http://blog.sanuker.com/?p=631

Roy
źródło
0

Dodaj następujące wiersze w CSS, aby elipsa działała

 p {
     display: block; // change it as per your requirement
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }
Manoj Selvin
źródło
0

Dla tych z nas, którzy nie chcą używać stałej szerokości , działa również przy użyciu display: inline-grid. Więc wraz z wymaganymi właściwościami po prostu dodajeszdisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
shazyriver
źródło