Estou criando um site responsivo para a escola e minha pergunta é:
Como defino um comprimento máximo de caracteres das frases (com CSS) no meu site (como 75 caracteres) que, quando tenho uma tela muito grande, as frases não ultrapassam 75 caracteres.
Eu tentei uma largura máxima, mas isso atrapalha meu layout. Estou usando consultas flexbox e de mídia para torná-lo responsivo.
textarea
ouinput
houver uma propriedade de comprimento máximo (maxlength="50"
isso está no HTML) para eles ou você precisaria usar Javascript. Também acho que interpretei errado, definir uma largura forçará a frase a cair para a próxima linha quando chegar ao fim. Esse é o comportamento padrão.Respostas:
Você sempre pode usar um método truncado definindo a
max-width
e overflowellipsis
como esteUm exemplo: http://jsfiddle.net/3czeyznf/
Para um truncamento de várias linhas, consulte uma
flex
solução. Um exemplo com truncamento em 3 linhas.Um exemplo: https://codepen.io/srekoble/pen/EgmyxV
fonte
Existe um 'valor de comprimento' CSS de
ch
.Do MDN
Isso pode se aproximar do que você procura.
fonte
ch
unidade) não parece funcionar (como esperado) para mim no Chrome 50, IE11 ou FF45 ?!height
eoverflow:hidden
. Eu gostei das reticências, mas só consegui fazer isso funcionar se eu definirwhite-space:no-wrap
. No meu caso, o texto pode quebrar, mas não exceder um certo limite de caracteres dentro do contêiner.white-space: nowrap;
Tente isso para truncar caracteres depois de configurá-lo para largura máxima. Eu usei 75ch neste caso
Para truncamento de múltiplas linhas, siga o link.
Um exemplo: https://codepen.io/srekoble/pen/EgmyxV
Usaremos o webkit css para isso. Em resumo, o WebKit é um mecanismo de renderização de navegador de HTML / CSS para Safari / Chrome. Isso pode ser mais específico, pois todo navegador é suportado por um mecanismo de renderização para desenhar a página da web HTML / CSS.
fonte
max-width:100%;
para a div do wrapper. Então você tem um truncamento responsivo.código de exemplo:
fonte
Com o Chrome, você pode definir o número de linhas exibidas com " -webkit-line-clamp ":
Então, para mim, é usar em uma extensão para que seja perfeita, mais informações aqui: https://medium.com/mofed/css-line-clamp-the-good-the-bad-and-the-straight-up -broken-865413f16e5
fonte
Isso não é possível com CSS, você terá que usar o Javascript para isso. Embora você possa definir a largura de p em até 30 caracteres, as próximas letras diminuirão automaticamente, mas novamente isso não será tão preciso e variará se os caracteres estiverem em maiúscula.
fonte
HTML
jQuery
CSS
RESULTADO
Jsfiddle
fonte
Solução CSS pura para truncar caracteres de várias linhas
Eu tive um problema semelhante e encontrei esta excelente solução única de CSS no Hackingui.com . Você pode ler o artigo para obter informações, mas abaixo está o código principal.
Eu testei e funciona perfeitamente. Espero que alguém ache útil antes de optar por opções de JS ou do servidor
fonte
Resposta da grade CSS moderna
Veja o código completo do CodePen . Dado o seguinte HTML:
Você pode usar o CSS Grid para criar três colunas e dizer ao contêiner para ter uma largura máxima de 70 caracteres para a coluna do meio que contém nosso parágrafo.
É assim que parece (Checkout CodePen para um exemplo completo):
Aqui está outro exemplo em que você pode usar minmax para definir um intervalo de valores. Em telas pequenas, a largura será definida para 50 caracteres de largura e, em telas grandes, terá 70 caracteres de largura.
fonte
ch
em colunas. Encantador.rrdOvr
. ;)Este post é para uma solução CSS, mas o post é bastante antigo, portanto, caso outras pessoas se deparem com isso e estejam usando uma estrutura JS moderna, como o Angular 4+, existe uma maneira simples de fazer isso através dos Tubos Angulares sem precisar mexer com CSS.
Provavelmente, também existem maneiras de "reagir" ou "vue". Isso é apenas para mostrar como isso pode ser feito dentro de uma estrutura.
truncate-text.pipe.ts
app.component.html
fonte
Experimente minha solução com 2 maneiras diferentes.
fonte