Esta publicación es para una solución CSS, pero la publicación es bastante antigua, por lo que en caso de que otros tropiecen con esto y estén utilizando un marco JS moderno como Angular 4+, hay una manera simple de hacerlo a través de Angular Pipes sin tener que perder el tiempo con CSS.
Probablemente también haya formas de "Reaccionar" o "Vue" para hacerlo. Esto es solo para mostrar cómo se podría hacer dentro de un marco.
truncate-text.pipe.ts
/**
* Helper to truncate text using JS in view only.
*
* This is pretty difficult to do reliably with CSS, especially when there are
* multiple lines.
*
* Example: {{ value | truncateText:maxLength }} or {{ value | truncateText:45 }}
*
* If maxLength is not provided, the value will be returned without any truncating. If the
* text is shorter than the maxLength, the text will be returned untouched. If the text is greater
* than the maxLength, the text will be returned with 3 characters less than the max length plus
* some ellipsis at the end to indicate truncation.
*
* For example: some really long text I won't bother writing it all ha...
*/
@Pipe({ name: 'truncateText' })
export class TruncateTextPipe implements PipeTransform {
transform(value: string, ...args: any[]): any {
const maxLength = args[0]
const maxLengthNotProvided = !maxLength
const isShorterThanMaximumLength = value.length < maxLength
if (maxLengthNotProvided || isShorterThanMaximumLength) {
return value
}
const shortenedString = value.substr(0, maxLength - 3)
return `${shortenedString}...`
}
}
app.component.html
<h1>{{ application.name | truncateText:45 }}</h1>
textarea
oinput
hay unamaxlength="50"
propiedad de longitud máxima ( esto está en el HTML) para ellos o tendría que usar Javascript. También creo que leí mal esto, establecer un ancho obligará a la oración a pasar a la siguiente línea cuando llegue al final. Este es el comportamiento predeterminado.