Posting ini adalah untuk solusi CSS, tetapi pos tersebut sudah cukup lama, jadi kalau-kalau orang lain tersandung dan menggunakan kerangka JS modern seperti Angular 4+, ada cara sederhana untuk melakukan ini melalui Pipa Angular tanpa harus main-main dengan CSS.
Mungkin ada cara "Bereaksi" atau "Vue" untuk melakukan ini juga. Ini hanya untuk menunjukkan bagaimana hal itu dapat dilakukan dalam suatu kerangka kerja.
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
atauinput
ada properti max panjang (maxlength="50"
ini dalam HTML) untuk mereka atau Anda harus menggunakan Javascript. Saya juga kira saya salah membaca ini, menetapkan lebar akan memaksa kalimat untuk turun ke baris berikutnya ketika hits akhir. Ini adalah perilaku default.