【问题标题】:Add animation when switching tabs切换标签时添加动画
【发布时间】:2020-03-02 11:24:58
【问题描述】:

我正在处理一些标签。有没有办法在切换标签时添加动画(向左/向右滑动)?

DEMO

代码

  viewMode = 'tab1';


<div class="container">
    <div class="tab-slider--nav">
      <ul class="tab-slider--tabs">
        <li class="tab-slider--trigger" [class.active]="viewMode == 'tab1'" rel="tab1" (click)="viewMode ='tab1'">Tab 1</li>
        <li class="tab-slider--trigger" [class.active]="viewMode == 'tab2'" rel="tab2" (click)="viewMode ='tab2'">Tab 2</li>
      </ul>
    </div>
    <div class="tab-slider--container" [ngSwitch]="viewMode">
      <div id="tab1" class="tab-slider--body" *ngSwitchCase="'tab1'">
        <h2>First Tab</h2>
        <p>Toggle switch style tab navigation. Currently only works with two tabs.</p>
        <p>asdasd.</p>
      </div>
      <div id="tab2" class="tab-slider--body" *ngSwitchCase="'tab2'">
        <h2>Second Tab</h2>
        <p>asdad</p>
      </div>
    </div>
  </div>

【问题讨论】:

    标签: angular typescript animation tabs


    【解决方案1】:

    尝试使用 Angular Animations 转换和触发器,这是我的示例:

    <body style="overflow:hidden">
      <div class="container">
        <div class="tab-slider--nav">
          <ul class="tab-slider--tabs">
            <li class="tab-slider--trigger" [class.active]="viewMode == 'tab1'" rel="tab1" (click)="viewMode ='tab1'">Tab 1</li>
            <li class="tab-slider--trigger" [class.active]="viewMode == 'tab2'" rel="tab2" (click)="viewMode ='tab2'">Tab 2</li>
          </ul>
        </div>
        <div class="tab-slider--container" [ngSwitch]="viewMode">
          <div  id="tab1" class="tab-slider--body" *ngSwitchCase="'tab1'" [@slideInOut]>
            <h2>First Tab</h2>
            <p>Toggle switch style tab navigation. Currently only works with two tabs.</p>
            <p >Donec ullamcorper nulla non metus auctor fringilla. Donec ullamcorper nulla non metus auctor fringilla. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla
              vitae elit libero, a pharetra augue.</p>
          </div>
          <div id="tab2" class="tab-slider--body" *ngSwitchCase="'tab2'" [@slideInOut]>
            <h2>Second Tab</h2>
            <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras mattis consectetur purus sit amet fermentum. Nulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Aenean eu leo
              quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.</p>
          </div>
        </div>
      </div>
    </body>
    

    TS:

    @Component({
      selector: 'my-app',
      templateUrl: './app.component.html',
      styleUrls: [ './app.component.css' ],
        animations: [
        trigger('slideInOut', [
          transition(':enter', [
            style({transform: 'translateX(+100%)'}),
            animate('200ms ease-in', style({transform: 'translateX(0%)'}))
          ]),  
        ]),
      ]
    })
    

    现场示例:https://stackblitz.com/edit/angular-dfaeek?file=src/app/app.module.ts

    https://angular.io/guide/transition-and-triggers

    也可以看看这个:

    https://material.angular.io/components/tabs/overview

    【讨论】:

    【解决方案2】:

    您可以使用 Angular 动画转换和触发器。 在这里您可以找到更多信息:https://angular.io/guide/transition-and-triggers

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多