Gần đây tôi đã xây dựng phần Góc 2 sau Đọc thêm thành phần. Thành phần này làm gì là thu gọn và mở rộng các khối văn bản dài với các liên kết "Đọc thêm" và "Đọc ít" hơn. Không dựa trên số lượng ký tự mà dựa trên chiều cao tối đa được chỉ định.Góc 2 Trượt lên và xuống Hoạt ảnh
import { Component, Input, ElementRef, AfterViewInit } from '@angular/core';
@Component({
selector: 'read-more',
template: `
<div [innerHTML]="text" [class.collapsed]="isCollapsed" [style.height]="isCollapsed ? maxHeight+'px' : 'auto'">
</div>
<a *ngIf="isCollapsable" (click)="isCollapsed =! isCollapsed">Read {{isCollapsed? 'more':'less'}}</a>
`,
styles: [`
div.collapsed {
overflow: hidden;
}
`]
})
export class ReadMoreComponent implements AfterViewInit {
//the text that need to be put in the container
@Input() text: string;
//maximum height of the container
@Input() maxHeight: number = 100;
//set these to false to get the height of the expended container
public isCollapsed: boolean = false;
public isCollapsable: boolean = false;
constructor(private elementRef: ElementRef) {
}
ngAfterViewInit() {
let currentHeight = this.elementRef.nativeElement.getElementsByTagName('div')[0].offsetHeight;
//collapsable only if the contents make container exceed the max height
if (currentHeight > this.maxHeight) {
this.isCollapsed = true;
this.isCollapsable = true;
}
}
}
Và sử dụng như:
<read-more [text]="details" [maxHeight]="250"></read-more>
Các thành phần hoạt động tốt. Bây giờ tôi cần thêm một số slide up/down animation cho thành phần để khi liên kết Read More được nhấp vào nội dung trượt xuống và khi Read less được nhấp, nội dung trượt lên đến chiều cao tối đa được chỉ định.
Mọi người có thể vui lòng hướng dẫn cách đạt được điều này không?
[Xem của tôi trả lời ở đây] (http://stackoverflow.com/a/37843393/1375316). Ví dụ này chính xác là những gì bạn đang cố gắng làm. – threeve
Cảm ơn bạn bave, tôi thực sự đã thử thêm các thông tin phong cách dưới đây để thành phần trên của tôi, nhưng điều này dường như không hoạt động. kiểu: [' div.collapsed { tràn: bị ẩn; } ', ' div { chuyển đổi: độ cao 500ms dễ dàng; } '] –
Nếu nó phù hợp với bạn, bạn có thể hợp lệ giải pháp của tôi không? – Julien