estouro de texto: reticências não estão funcionando

264

Isto é o que eu tentei (veja aqui ):

body {
    overflow: hidden;
}

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

Essencialmente, quero que a extensão encolha com reticências quando a janela for pequena. O que eu fiz errado?

Randomblue
fonte
6
os requisitos para reticências ao trabalho: stackoverflow.com/a/33061059/3597276
Michael Benjamin
O problema que tive quando pensei que não estava funcionando era não definir a largura por tempo suficiente (10px). Então, eu estava cortando as reticências, doh!
Rod

Respostas:

459

Você precisa ter CSS overflow, width(ou max-width) display, e 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
}

Adendo Se você deseja obter uma visão geral das técnicas para fixação de linhas (reticências com várias linhas), consulte esta página de CSS-Tricks: https://css-tricks.com/line-clampin/

Adendo2 (maio de 2019)
Como este link afirma, o Firefox 68 suportará -webkit-line-clamp(!)

yunzen
fonte
12
A propriedade de espaço em branco era o que eu estava perdendo. Obrigado.
usar o seguinte
65
É uma merda que você precisa da white-space: nowrap;propriedade. Agora você só pode terminar uma linha de texto com ... em vez de um texto em bloco.
Sven van Zoelen
3
Hoje, todos os principais navegadores suportam reticências: caniuse.com/#feat=text-overflow
Kazy
1
As reticências multilinhas do @basZero não são suportadas apenas com CSS. Você precisa tomar outras medidas
yunzen
1
É necessário especificar uma largura para que o contêiner seja vinculado, definir overflow: hidden para que o navegador oculte o texto de transição e, em seguida, defina reticências text-overflow: para instruir o navegador a lidar especialmente com a ocultação de excesso de texto.
Michael Angstadt
46

Verifique se você tem um elemento de bloco, um tamanho máximo e defina overflow como oculto. (Testado no IE9 e FF 7)

http://jsfiddle.net/uh9zD/

div {
    border: solid 2px blue;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 50px;
}
ZippyV
fonte
5
Parece que esse espaço em branco: a propriedade nowrap também pode ser geralmente necessária, para qualquer coisa com espaços.
Kzqai
Duplicação exata do comentário acima.
usar o seguinte
@nebulousGirl: na verdade, o comentário de Kzqai foi anterior ao postado nos comentários de HerrSerker.
Lepe
Há uma peculiaridade no IE - o IE não quebra uma segunda palavra (testada no IE 11) ... Vá em frente. Funciona em qualquer outro navegador conforme o esperado (incluindo o bom e velho Opera 12).
Nux
1
@Nux Isso também não está funcionando como esperado em MS navegador Borda
yunzen
21

Para várias linhas no Chrome, use:

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

Inspirado no youtube ;-)

Arraxas
fonte
Esta é uma solução muito interessante. Ele usa -webkit-*propriedades, mas é suportado em todos os principais navegadores. Mais informações podem ser encontradas aqui: css-tricks.com/almanac/properties/l/line-clamp
dkniffin 14/04
5

Eu estava tendo um problema com reticências no chrome. Ativando o espaço em branco: o nowrap parecia corrigi-lo.

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
fonte
4
word-wrap: break-word;

isso e só isso fez o trabalho para mim por um

<pre> </pre> 

tag

tudo o resto não conseguiu fazer as reticências ....

aimiliano
fonte
3

Apenas um alerta para quem pode tropeçar nisso ... Meu h2 estava herdando

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

o que não permitia reticências. Aparentemente, isso é muito bom né?

Ben Racicot
fonte
2

Adicione este código abaixo para onde você gosta

exemplo

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;
 }
Sathish
fonte
2

Para várias linhas

No chrome, você pode aplicar esse css se precisar aplicar reticências em várias linhas.

Você também pode adicionar largura no seu css para especificar o elemento de certa largura:

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

Você pode tentar usar reticências adicionando o seguinte no CSS:

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

Mas parece que esse código se aplica apenas ao corte de uma linha. Mais formas de aparar texto e mostrar reticências podem ser encontradas neste site: http://blog.sanuker.com/?p=631

Roy
fonte
0

Adicione as seguintes linhas no CSS para que as reticências funcionem

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

Para aqueles de nós que não querem usar largura fixa , também funciona usando display: inline-grid. Então, juntamente com as propriedades necessárias, você apenas adicionadisplay

span {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: inline-grid;
}
shazyriver
fonte