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?


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


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

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


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;

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


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é?


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

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>


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


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

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;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.