кодесурса
«Угловое

Анимационные переходы и триггеры

script1adsense2code
script1adsense3code

Создание стилей анимации является одной частью процесса анимации, а запуск анимации из шаблона - другой. Как и в ECMAScript, мы объявляем функцию, но мы должны запустить ее, чтобы увидеть эффект.

Предопределенные состояния и сопоставление с подстановочными знаками

В Angular переходные состояния могут быть определены явно с помощью функции state () или с использованием предопределенных * (подстановочных знаков) и пустых состояний.

Состояние подстановочного знака

Звездочка * или подстановочный знак соответствуют любому состоянию анимации. Это полезно для определения переходов, которые применяются независимо от начального или конечного состояния HTML-элемента.

Вот еще один пример кода с использованием подстановочного состояния вместе с нашим предыдущим примером с использованием открытого и закрытого состояний. Вместо того, чтобы определять каждую пару переходов между состояниями, мы теперь говорим, что любой переход в закрытое состояние занимает 1 секунду, а любой переход в открытое состояние занимает 0,5 секунды.

Использование подстановочных знаков со стилями

Используйте подстановочный знак * со стилем, чтобы указать анимации использовать текущее значение стиля, и анимируйте его. Подстановочный знак - это запасное значение, которое используется, если анимированное состояние не объявлено в триггере.

transition ('* => open', [
  animate ('1s',
    style ({ opacity: '*' }),
  ),
]),

Состояние подстановочного знака

Звездочка * или подстановочный знак соответствуют любому состоянию анимации. Это полезно для определения переходов, которые применяются независимо от начального или конечного состояния HTML-элемента. Или мы можем определить анимацию, чтобы сказать, что любой переход в закрытое состояние занимает 1 секунду, а любой переход в открытое состояние занимает 0,5 секунды.

Код TypeScript:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
  imports: [
    BrowserModule,
    BrowserAnimationsModule
  ],
  animations: [
  trigger('openClose', [
    // ...
    state('open', style({
      height: '200px',
      opacity: 1,
      backgroundColor: 'yellow'
    })),
    state('closed', style({
      height: '100px',
      opacity: 0.5,
      backgroundColor: 'green'
    })),
    transition('* => closed', [
      animate('1s')
    ]),
    transition('* => open', [
      animate('0.5s')
    ]),
  ]),
],
})
export class AnimatedModule { }

Демонстрация в реальном времени:

См. Pen open-close.component.ts от w3resource ( @ w3resource ) в CodePen .


Пустое состояние

Вы можете использовать состояние void для настройки переходов для элемента, который входит или покидает страницу.

Объединение подстановочных и пустых состояний

Вы можете комбинировать подстановочные и пустые состояния при переходе для запуска анимации, которая входит и покидает страницу:

  • Переход * => void применяется, когда элемент покидает представление, независимо от того, в каком состоянии он находился до своего выхода.
  • Переход void => * применяется, когда элемент входит в представление, независимо от того, какое состояние он принимает при входе.
  • Состояние подстановочного знака * соответствует любому состоянию, включая void.

Анимация входа и выхода из вида

Мы продемонстрировали бы, как анимировать элементы, входящие или выходящие из страницы.

Демонстрация, которая будет реализована, имеет следующие характеристики:

  • Когда вы добавляете ученика в список учеников, он появляется на странице слева.
  • Когда вы удаляете ученика из списка, он вылетает вправо.

Код TypeScript:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
  imports: [
    BrowserModule,
    BrowserAnimationsModule
  ],
  animations: [
  trigger('flyInOut', [
    state('in', style({ transform: 'translateX(0)' })),
    transition('void => *', [
      style({ transform: 'translateX(-100%)' }),
      animate(100)
    ]),
    transition('* => void', [
      animate(100, style({ transform: 'translateX(100%)' }))
    ])
  ])
]
})
export class AnimatedModule { }

Демонстрация в реальном времени:

См. Pen student-list-enter-exit.ts от w3resource ( @ w3resource ) в CodePen .


: введите и: оставьте псевдонимы

: enter и: left - псевдонимы для void => * и * => void переходов. Эти псевдонимы используются несколькими анимационными функциями.

transition ( ':enter', [ ... ] );  // alias for void => *
transition ( ':leave', [ ... ] );  // alias for * => void

Использование * ngIf и * ngFor с: enter и: оставить

Переход: enter выполняется, когда на странице размещаются какие-либо представления * ngIf или * ngFor, и: оставлять запускается, когда эти представления удаляются со страницы.

В этом примере у нас есть специальный триггер для анимации входа и выхода, который называется myInsertRemoveTrigger. Шаблон HTML содержит следующий код.

<div @myInsertRemoveTrigger *ngIf="isShown" class="insert-remove-container">
  <p>The box is inserted</p>
</div>

В файле компонента переход: enter устанавливает начальную непрозрачность 0, а затем анимирует ее, чтобы изменить эту непрозрачность на 1 при вставке элемента в представление.

Предыдущая: HttpClient
Далее: Введение в угловую анимацию

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code