com
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"..." será mostrado no final da linha se estiver excedido. No entanto, isso será mostrado apenas em uma linha. Mas gostaria que fosse mostrado em várias linhas.
Pode parecer com:
+--------------------+
|abcde feg hij dkjd|
|dsji jdia js ajid s|
|jdis ajid dheu d ...|/*Here it's overflowed, so "..." is shown. */
+--------------------+
Respostas:
Existem também vários plugins jquery que lidam com esse problema, mas muitos não lidam com várias linhas de texto. Trabalhos seguintes:
Existem também alguns testes de pré-desempenho .
fonte
Eu hackeei até conseguir algo próximo disso. Ele vem com algumas ressalvas:
Devo também observar que o texto será quebrado em um limite de palavras, não em caracteres. Isso foi deliberado (já que considero melhor para textos mais longos), mas como é diferente do que
text-overflow: ellipsis
pensei, eu deveria mencionar.Se você pode conviver com essas advertências, o HTML fica assim:
E esse é o CSS correspondente, usando o exemplo de uma caixa de 150 pixels de largura com três linhas de texto em um fundo branco. Pressupõe que você tenha uma redefinição de CSS ou similar que defina margens e preenchimentos para zero, quando necessário.
O resultado fica assim:
Para esclarecer como funciona, aqui está a mesma imagem, exceto que
.hidedots1
é destacada em vermelho e.hidedots2
em ciano. Estes são os retângulos que ocultam as reticências quando não há texto invisível:Testado no IE9, IE8 (emulado), Chrome, Firefox, Safari e Opera. Não funciona no IE7.
fonte
your text
é envolvido com<p>
tags (como deveriam ser), então você pode usar.ellipsify p:before
e.ellipsify p:after
, em seguida, é claro que você precisa.ellipsify p:before{content:"\2026";}
o\2026
é o código para a elipse, também, pode precisarcontent:" ";
como eles podem não funcionar para os elementos vazios.+1
a estar usando.Aqui está um artigo recente do CSS-Tricks que discute isso.
Algumas das soluções no artigo acima (que não são mencionadas aqui) são
1)
-webkit-line-clamp
e 2) Coloque um elemento absolutamente posicionado no canto inferior direito com desbotamentoAmbos os métodos assumem a seguinte marcação:
com css
1) -webkit-line-clamp
grampo de linha FIDDLE (..para um máximo de 3 linhas)
2) desaparecer
Fade out FIDDLE
Solução # 3 - Uma combinação usando @supports
Podemos usar o @supports para aplicar o grampo de linha do webkit nos navegadores da webkit e aplicar o desbotamento em outros navegadores.
@supports braçadeira de linha com violino de desvanecimento de fallback
CSS
fonte
O link abaixo fornece uma solução HTML / CSS pura para esse problema.
Suporte ao navegador - conforme declarado no artigo:
http://www.mobify.com/dev/multiline-ellipsis-in-pure-css
o css:
o html:
o violino
(redimensionar a janela do navegador para teste)
fonte
Chrome for Mac Version 48.0.2564.116
Depois de examinar as especificações do W3 para excesso de texto , não acho que isso seja possível usando apenas CSS. A elipse é uma propriedade nova, por isso provavelmente ainda não recebeu muito uso ou feedback até o momento.
No entanto, esse cara parece ter feito uma pergunta semelhante (ou idêntica) e alguém conseguiu encontrar uma boa solução jQuery. Você pode demonstrar a solução aqui: http://jsfiddle.net/MPkSF/
Se o javascript não for uma opção, acho que você pode estar sem sorte ...
fonte
Só quero adicionar a esta pergunta por uma questão de integridade.
fonte
-o-ellipsis-lastline
pode ter sido removido quando o Opera mudou para o WebKit. Deixando bala para fins históricos.Ótima pergunta ... Eu gostaria que houvesse uma resposta, mas este é o mais próximo que você pode obter com CSS atualmente. Sem reticências, mas ainda bastante utilizável.
fonte
Eu encontrei esta solução css (scss) que funciona muito bem. Nos navegadores Webkit, ele mostra as reticências e, em outros navegadores, apenas trunca o texto. O que é bom para o uso pretendido.
Um exemplo do criador: http://codepen.io/martinwolf/pen/qlFdp
fonte
-webkit-line-clamp
suporte ao navegador caniuse.com/#search=-webkit-line-clampAqui está a solução mais próxima que eu poderia obter usando apenas css.
HTML
CSS
Working Fiddle ( redimensione a janela para verificar )
Link para o meu blog para explicação
Updated Fiddle
Espero que agora algum especialista em CSS tenha tido uma idéia de como torná-lo perfeito. :)
fonte
div::before
vez dissospan
? :)Há muitas respostas aqui, mas eu precisava de uma que fosse:
A ressalva é que ele não fornece reticências para os navegadores que não suportam a
-webkit-line-clamp
regra (atualmente IE, Edge, Firefox), mas usa um gradiente para diminuir o texto.Você pode vê-lo em ação neste CodePen e também pode ver uma versão Javascript aqui (sem jQuery).
fonte
Um pouco atrasado para esta festa, mas eu pensei em uma solução única. Em vez de tentar inserir suas próprias reticências através de truques de css ou js, pensei em tentar rolar com a única restrição de linha única. Portanto, duplico o texto para cada "linha" e apenas uso um recuo de texto negativo para garantir que uma linha comece onde a última pára. FIDDLE
CSS:
HTML:
Mais detalhes no violino. Há um problema no navegador que reflete o uso de um redesenho de JS e, portanto, verifique-o, mas esse é o conceito básico. Quaisquer pensamentos / sugestões são muito apreciados.
fonte
obrigado @balpha e @Kevin, eu combino dois métodos.
nenhum js é necessário neste método.
você pode usar
background-image
e nenhum gradiente é necessário para ocultar pontos.o
innerHTML
de.ellipsis-placeholder
não é necessário, eu uso.ellipsis-placeholder
para manter a mesma largura e altura com.ellipsis-more
. Você poderia usar em seudisplay: inline-block
lugar.jsfiddler
fonte
solução javascript será melhor
is-ellipsis
classe se a janela redimensionar ou mudar de elementogetRowRects
Element.getClientRects()
funciona como estecada rects na mesma linha tem o mesmo
top
valor, portanto, descubra os rects comtop
valores diferentes , como esteflutuador
...more
como este
detectar redimensionamento da janela ou elemento alterado
como este
fonte
veja mais clique aqui
fonte
uma base pura de método css no -webkit-line-clamp:
fonte
Encontrei um truque de javascript, mas você precisa usar o comprimento da string. Digamos que você queira 3 linhas de largura de 250 px, você pode calcular o comprimento por linha, ou seja
fonte