Winkel-2 Slide Up und Down Animation

Ich habe vor kurzem gebaut, die folgenden Eckig 2 Mehr Lesen Komponente. Was diese Komponente tut, ist das reduzieren und erweitern Sie lange Textblöcke mit "Lesen Sie mehr" und "Weniger Lesen" - links. Nicht auf der basis von die Anzahl der Zeichen, jedoch auf der Grundlage der angegebenen max Höhe.

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;
        }
    }
}

Und verwendet wie:

<read-more [text]="details" [maxHeight]="250"></read-more>

Die Komponente funktioniert gut. Jetzt muss ich hinzufügen, dass einige slide up/down-animation, um die Komponente so, dass wenn Mehr Lesen link geklickt wird, den Inhalt nach unten schieben und beim Lesen weniger geklickt wird, den Inhalt-dia bis zur angegebenen max Höhe.

Kann mir jemand bitte eine Anleitung wie dies zu erreichen?

  • Siehe meine Antwort hier. Das Beispiel ist so ziemlich genau das, was Sie zu tun versuchen.
  • Danke threeve, habe ich eigentlich versucht, indem die unten Stil info zu meinem obigen Komponente, aber das scheint nicht zu funktionieren. styles: [` div.zusammengebrochen { overflow: hidden; }, div { transition: Höhe 500ms ease; }`]
  • Wenn es für Sie arbeitet, können Sie gültige meine Lösung bitte?
  • Die Lösung scheint zu funktionieren nur in einer Richtung - oben schieben.
InformationsquelleAutor Naveed Ahmed | 2016-06-15
Schreibe einen Kommentar