É possível limitar um comprimento de texto a "n" linhas usando CSS (ou cortá-lo quando estourar verticalmente).
text-overflow: ellipsis;
só funciona para texto de 1 linha.
texto original:
Ultrices natoque mus mattis, aliquá, cras em pelellita
tincidunt elit purus lectus, vel aliquet, elementum nunc
nunc rhoncus placerat urna! Sente-se! Ut penatibus turpis
mus tincidunt! Dapibus sed aenean, magna sagittis, lorem velit
saída desejada (2 linhas):
Ultrices natoque mus mattis, aliquá, cras em pelellita
tincidunt elit purus lectus, vel ut aliquet, elementum ...
Respostas:
Existe uma maneira de fazer isso usando sintaxe não oficial de grampo de linha e , começando no Firefox 68, ele funciona em todos os principais navegadores.
A menos que você se preocupe com os usuários do IE, não há necessidade de fazer
line-height
e fazermax-height
fallbacks.fonte
-webkit-box-orient: vertical;
sendo escondido quando SCSS compilação tentar isso/* autoprefixer: ignore next */ -webkit-box-orient: vertical;
O que você pode fazer é o seguinte:
onde
max-height:
=line-height:
×<number-of-lines>
polem
.fonte
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
para que as reticências apareçam. Mas isso só funcionará no Chrome. Para a solução que o trabalho no Firefox, bem como, veja aqui: stackoverflow.com/a/20595073/1884158 E aqui é um tutorial útil sobre o assunto: css-tricks.com/line-clampinSolução de trabalho entre navegadores
Esse problema vem nos atormentando há anos.
Para ajudar em todos os casos, eu expus a abordagem somente CSS, e uma abordagem jQuery, caso as advertências do css sejam um problema.
Aqui está uma solução que eu desenvolvi em CSS, que funciona em todas as circunstâncias, com algumas pequenas advertências.
O básico é simples, oculta o estouro da extensão e define a altura máxima com base na altura da linha, conforme sugerido por Eugene Xa.
Depois, há uma pseudo classe após a div que contém as reticências.
Ressalvas
Essa solução sempre colocará as reticências, independentemente da necessidade.
Se a última linha terminar com uma frase final, você terminará com quatro pontos ....
Você precisará ser feliz com o alinhamento de texto justificado.
As reticências estarão à direita do texto, que pode parecer desleixado.
Código + Snippet
jsfiddle
Abordagem jQuery
Na minha opinião, esta é a melhor solução, mas nem todos podem usar o JS. Basicamente, o jQuery verificará qualquer elemento .text e, se houver mais caracteres que o max predefinido, ele cortará o restante e adicionará reticências.
Não há advertências para essa abordagem, no entanto, este exemplo de código serve apenas para demonstrar a idéia básica - eu não usaria isso na produção sem aprimorá-la por duas razões:
1) Reescreverá o html interno dos elementos .text. se necessário ou não. 2) Não é necessário verificar se o html interno não possui elementos aninhados - portanto, você depende muito do autor para usar o .text corretamente.
Editado
Obrigado pela captura @markzzz
Fragmento de código
jsfiddle
fonte
Tanto quanto eu posso ver, isso seria possível apenas usando
height: (some em value); overflow: hidden
e, mesmo assim, não teria a fantasia...
no final.Se isso não for uma opção, acho que é impossível sem algum pré-processamento no servidor (difícil porque o fluxo de texto é impossível de prever com segurança) ou jQuery (possível, mas provavelmente complicado).
fonte
.mytext
usando o jQuery, descobrir se ele possui mais conteúdo do que o visível e adicionar um...
manualmente. Dessa forma, você é compatível com clientes sem JS e os clientes com JS podem ter a decoração. Talvez valha uma pergunta separada para o jQuery Guru responder; pode ser possível fazer de forma relativamente fácilA solução desse segmento é usar o plug-in jquery dotdotdot . Não é uma solução CSS, mas oferece muitas opções para links "leia mais", redimensionamento dinâmico etc.
fonte
a seguinte aula CSS me ajudou a obter reticências em duas linhas.
fonte
Atualmente você não pode, mas no futuro poderá usá-lo
text-overflow:ellipis-lastline
. Atualmente, está disponível com o prefixo do fornecedor no Opera 10.60+: exemplofonte
Eu tenho uma solução que funciona bem, mas em vez de uma elipse, ela usa um gradiente. Funciona quando você tem texto dinâmico, para não saber se será longo o suficiente para precisar de uma elipse. As vantagens são que você não precisa fazer nenhum cálculo de JavaScript e funciona para contêineres de largura variável, incluindo células da tabela e é cross-browser. Ele usa algumas divs extras, mas é muito fácil de implementar.
Marcação:
CSS:
postagem no blog: http://salzerdesign.com/blog/?p=453
página de exemplo: http://salzerdesign.com/test/fade.html
fonte
fonte
Eu realmente gosto de grampo de linha, mas ainda não há suporte para o firefox .. então eu vou com um cálculo matemático e apenas oculto o excesso
Agora, digamos que você deseja remover e adicionar esta classe via jQuery com um link, você precisará de um pixel extra para que a altura máxima seja de 63 px, isso ocorre porque você precisa verificar sempre se a altura é maior que 62px, mas no caso de 4 linhas, você receberá um falso verdadeiro, portanto, um pixel extra corrigirá isso e não criará problemas extras
vou colar um coffeescript para isso, apenas por exemplo, usa alguns links ocultos por padrão, com classes read-more e read-less, ele remove os que o excesso não precisa e remove o corpo classes -overflow
fonte
Se você quer se concentrar em cada um,
letter
pode fazer assim, refiro-me a esta perguntaMostrar snippet de código
Se você quer se concentrar em cada um,
word
pode fazer assim + espaçoMostrar snippet de código
Se você quer se concentrar em cada um,
word
pode fazer assim + sem espaçoMostrar snippet de código
fonte
Exemplo de código básico: aprender a codificar é fácil. Verifique os comentários do estilo CSS.
fonte
Eu estive procurando por isso, mas então percebo, caramba, meu site usa php !!! Por que não usar a função de recorte na entrada de texto e brincar com o comprimento máximo ....
Aqui está uma solução possível também para quem usa php: http://ideone.com/PsTaI
fonte