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?


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(!)


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;
}

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 ;-)


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;

4
word-wrap: break-word;

to i tylko to wykonało dla mnie pracę

<pre> </pre> 

etykietka

wszystko inne nie wykonało elipsy ....


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?


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;
 }

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>


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


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;
   }

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;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.