Bài đăng này là một giải pháp CSS, nhưng bài đăng này khá cũ, vì vậy trong trường hợp những người khác vấp phải điều này và đang sử dụng một khung công tác JS hiện đại như Angular 4+, có một cách đơn giản để thực hiện điều này thông qua Angular Faucet mà không cần phải loay hoay với CSS.
Có lẽ cũng có những cách "Phản ứng" hoặc "Vue" để làm việc này. Đây chỉ là để giới thiệu làm thế nào nó có thể được thực hiện trong một khuôn khổ.
cắt ngắn-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
hoặcinput
có độ dài tối đa (maxlength="50"
thuộc tính HTML) cho họ hoặc bạn sẽ phải sử dụng Javascript. Ngoài ra tôi nghĩ rằng tôi đã đọc sai điều này, thiết lập độ rộng sẽ buộc câu rơi xuống dòng tiếp theo khi nó kết thúc. Đây là hành vi mặc định.