Animations transitions and triggers

From Get docs
Angular/docs/7/guide/transition-and-triggers


Animations transitions and triggers

You learned the basics of Angular animations in the introduction page.

In this guide, we go into greater depth on special transition states such as * (wildcard) and void, and show how these special states are used for elements entering and leaving a view. The chapter also explores on multiple animation triggers, animation callbacks and sequence-based animation using keyframes.

Predefined states and wildcard matching

In Angular, transition states can be defined explicitly through the state() function, or using the predefined * (wildcard) and void states.

Wildcard state

An asterisk * or wildcard matches any animation state. This is useful for defining transitions that apply regardless of the HTML element's start or end state.

For example, a transition of open => * applies when the element's state changes from open to anything else.

[[../File:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAADlCAMAAACS9fUyAAA59GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOC0wMS0xNlQxNjoxNDozOC0wODowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE4LTAxLTE2VDE2OjE4OjUyLTA4OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOC0wMS0xNlQxNjoxODo1Mi0wODowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDphZmRiYjM0MC04YjQ5LTQ3ZWUtYjJjZi0zMWQ0YThhNjkwNWE8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2NWIzMjA2My0zYmFhLTExN2ItYWFkNy1hM2RjOTQ0ZGM3Yjc8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDplYTNiMDZkZC01MGUyLTRkNzItOTFjYS1iYmU4NTQ0NjA2NTQ8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZWEzYjA2ZGQtNTBlMi00ZDcyLTkxY2EtYmJlODU0NDYwNjU0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTAxLTE2VDE2OjE0OjM4LTA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6YWZkYmIzNDAtOGI0OS00N2VlLWIyY2YtMzFkNGE4YTY5MDVhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTAxLTE2VDE2OjE4OjUyLTA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTAwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjIyOTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+2CgOrQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAwBQTFRF////8/Pz//+e2NjYkPoD4fyhrLnQ4vyh//////8Dbn2XAQIB/f/1+f+e8v+e9f+f7v+f4vyi///6//8A//+a5v6h4P2b5Pym4f2d6/+f5P2h/P+fw7+3x9Pnkv8A5/+f+Pr/4PyhkfwC3/2Y5vyu3v2S8/7ZAmvA//r/2N7/9vYAfvEA6d//k6WMeaSMaahcmapc6v6hxcK7labEAXS8m/8B1dvlws7i5P+f+/3+AWLCAVnEEnPA//+jCH65oP8D+P6kgNalHX2+YZO+mKu2YMGqJW7DFggC9/f6w/mfHZSzt/OgV4i/PqivgvkAFWbEBQcWcMuoLZ+xFxYX6OntpbXZ1t+tbm1sOpO44uHgRoLAyu6k2d4ALBMFUresvMYKLIq6y8rKkN6knuSkFIq2DSYAcqN97/qly9Gx/fL/0Mr/YrE5rMK0MT9Tquyiub+4baa3//7q3+WsvM6xcJi+jKO5HyAjf527z+79M37AS5e5ksWui4mIoqKizvahn7e2NzY37vKp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|thumb|none|500x229px]]

Here's another code sample using the wildcard state together with our previous example using the open and closed states. Instead of defining each state-to-state transition pair, we're now saying that any transition to closed takes 1 second, and any transition to open takes 0.5 seconds.

This allows us to add new states without having to include separate transitions for each one.

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')
    ]),
  ]),
],

Use a double arrow syntax to specify state-to-state transitions in both directions.

transition('open <=> closed', [
  animate('0.5s')
]),

Using wildcard state with multiple transition states

In our two-state button example, the wildcard isn't that useful because there are only two possible states, open and closed. Wildcard states are better when an element in one particular state has multiple potential states that it can change to. If our button can change from open to either closed or something like inProgress, using a wildcard state could reduce the amount of coding needed.

[[../File:data:image/png;base64,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|thumb|none|600x426px]]

animations: [
  trigger('openClose', [
    // ...
    state('open', style({
      height: '200px',
      opacity: 1,
      backgroundColor: 'yellow'
    })),
    state('closed', style({
      height: '100px',
      opacity: 0.5,
      backgroundColor: 'green'
    })),
    transition('open => closed', [
      animate('1s')
    ]),
    transition('closed => open', [
      animate('0.5s')
    ]),
    transition('* => closed', [
      animate('1s')
    ]),
    transition('* => open', [
      animate('0.5s')
    ]),
    transition('open <=> closed', [
      animate('0.5s')
    ]),
    transition ('* => open', [
      animate ('1s',
        style ({ opacity: '*' }),
      ),
    ]),
    transition('* => *', [
      animate('1s')
    ]),

The * => * transition applies when any change between two states takes place.

Transitions are matched in the order in which they are defined. Thus, you can apply other transitions on top of the * => * (any-to-any) transition. For example, define style changes or animations that would apply just to open => closed, or just to closed => open, and then use * => * as a fallback for state pairings that aren't otherwise called out.

To do this, list the more specific transitions before * => *.

Using wildcards with styles

Use the wildcard * with a style to tell the animation to use whatever the current style value is, and animate with that. Wildcard is a fallback value that's used if the state being animated isn't declared within the trigger.

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

Void state

You can use the void state to configure transitions for an element that is entering or leaving a page. See Animating entering and leaving a view.

Combining wildcard and void states

You can combine wildcard and void states in a transition to trigger animations that enter and leave the page:

  • A transition of * => void applies when the element leaves a view, regardless of what state it was in before it left.
  • A transition of void => * applies when the element enters a view, regardless of what state it assumes when entering.
  • The wildcard state * matches to any state, including void.

Animating entering and leaving a view

This section shows how to animate elements entering or leaving a page.

Note: For our purposes, an element entering or leaving a view is equivalent to being inserted or removed from the DOM.

Now we'll add a new behavior:

  • When you add a hero to the list of heroes, it appears to fly onto the page from the left.
  • When you remove a hero from the list, it appears to fly out to the right.
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%)' }))
    ])
  ])
]

In the above code, we applied the void state when the HTML element isn't attached to a view.

:enter and :leave aliases

:enter and :leave are aliases for the void => * and * => void transitions. These aliases are used by several animation functions.

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

It's harder to target an element that is entering a view because it isn't in the DOM yet. So, use the aliases :enter and :leave to target HTML elements that are inserted or removed from a view.

Use of *ngIf and *ngFor with :enter and :leave

The :enter transition runs when any *ngIf or *ngFor views are placed on the page, and :leave runs when those views are removed from the page.

In this example, we have a special trigger for the enter and leave animation called myInsertRemoveTrigger. The HTML template contains the following code.

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

In the component file, the :enter transition sets an initial opacity of 0, and then animates it to change that opacity to 1 as the element is inserted into the view.

trigger('myInsertRemoveTrigger', [
  transition(':enter', [
    style({ opacity: 0 }),
    animate('5s', style({ opacity: 1 })),
  ]),
  transition(':leave', [
    animate('5s', style({ opacity: 0 }))
  ])
]),

Note that this example doesn't need to use state().

:increment and :decrement in transitions

The transition() function takes additional selector values, :increment and :decrement. Use these to kick off a transition when a numeric value has increased or decreased in value.

Note: The following example uses query() and stagger() methods, which is discussed in the complex sequences page.

trigger('filterAnimation', [
  transition(':enter, * => 0, * => -1', []),
  transition(':increment', [
    query(':enter', [
      style({ opacity: 0, width: '0px' }),
      stagger(50, [
        animate('300ms ease-out', style({ opacity: 1, width: '*' })),
      ]),
    ], { optional: true })
  ]),
  transition(':decrement', [
    query(':leave', [
      stagger(50, [
        animate('300ms ease-out', style({ opacity: 0, width: '0px' })),
      ]),
    ])
  ]),
]),

Boolean values in transitions

If a trigger contains a boolean value as a binding value, then this value can be matched using a transition() expression that compares true and false, or 1 and 0.

<div [@openClose]="isOpen ? true : false" class="open-close-container">
</div>

In the code snippet above, the HTML template binds a <div> element to a trigger named openClose with a status expression of isOpen, and with possible values of true and false. This is an alternative to the practice of creating two named states of open and close.

In the component code, in the @Component metadata under the animations: property, when the state evaluates to true (meaning "open" here), the associated HTML element's height is a wildcard style or default. In this case, use whatever height the element already had before the animation started. When the element is "closed," the element animates to a height of 0, which makes it invisible.

animations: [
  trigger('openClose', [
    state('true', style({ height: '*' })),
    state('false', style({ height: '0px' })),
    transition('false <=> true', animate(500))
  ])
],

Multiple animation triggers

You can define more than one animation trigger for a component. You can attach animation triggers to different elements, and the parent-child relationships among the elements affect how and when the animations run.

Parent-child animations

Each time an animation is triggered in Angular, the parent animation always get priority and child animations are blocked. In order for a child animation to run, the parent animation must query each of the elements containing child animations and then allow the animations to run using the animateChild() function.

Disabling an animation on an HTML element

A special animation control binding called @.disabled can be placed on an HTML element to disable animations on that element, as well as any nested elements. When true, the @.disabled binding prevents all animations from rendering.

The code sample below shows how to use this feature.

<div [@.disabled]="isDisabled">
  <div [@childAnimation]="isOpen ? 'open' : 'closed'"
    class="open-close-container">
    <p>The box is now {{ isOpen ? 'Open' : 'Closed' }}!</p>
  </div>
</div>
@Component({
  animations: [
    trigger('childAnimation', [
      // ...
    ]),
  ],
})
export class OpenCloseChildComponent {
  isDisabled = false;
  isOpen = false;
}

When the @.disabled binding is true, the @childAnimation trigger doesn't kick off.

When an element within an HTML template has animations disabled using the @.disabled host binding, animations are disabled on all inner elements as well. You can't selectively disable multiple animations on a single element.

However, selective child animations can still be run on a disabled parent in one of the following ways:

  • A parent animation can use the query() function to collect inner elements located in disabled areas of the HTML template. Those elements can still animate.
  • A subanimation can be queried by a parent and then later animated with the animateChild() function.

Disabling all animations

To disable all animations for an Angular app, place the @.disabled host binding on the topmost Angular component.

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css'],
  animations: [
    slideInAnimation
    // animation triggers go here
  ]
})
export class AppComponent {
  @HostBinding('@.disabled')
  public animationsDisabled = false;
}

Note: Disabling animations application-wide is useful during end-to-end (E2E) testing.

Animation callbacks

The animation trigger() function emits callbacks when it starts and when it finishes. In the example below we have a component that contains an openClose trigger.

@Component({
  selector: 'app-open-close',
  animations: [
    trigger('openClose', [
      // ...
    ]),
  ],
  templateUrl: 'open-close.component.html',
  styleUrls: ['open-close.component.css']
})
export class OpenCloseComponent {
  onAnimationEvent ( event: AnimationEvent ) {
  }
}

In the HTML template, the animation event is passed back via $event, as @trigger.start and @trigger.done, where trigger is the name of the trigger being used. In our example, the trigger openClose appears as follows.

<div [@openClose]="isOpen ? 'open' : 'closed'"
    (@openClose.start)="onAnimationEvent($event)"
    (@openClose.done)="onAnimationEvent($event)"
    class="open-close-container">
</div>

A potential use for animation callbacks could be to cover for a slow API call, such as a database lookup. For example, you could set up the InProgress button to have its own looping animation where it pulsates or does some other visual motion while the backend system operation finishes.

Then, another animation can be called when the current animation finishes. For example, the button goes from the inProgress state to the closed state when the API call is completed.

An animation can influence an end user to perceive the operation as faster, even when it isn't. Thus, a simple animation can be a cost-effective way to keep users happy, rather than seeking to improve the speed of a server call and having to compensate for circumstances beyond your control, such as an unreliable network connection.

Callbacks can serve as a debugging tool, for example in conjunction with console.warn() to view the application's progress in a browser's Developer JavaScript Console. The following code snippet creates console log output for our original example, a button with the two states of open and closed.

export class OpenCloseComponent {
  onAnimationEvent ( event: AnimationEvent ) {
    // openClose is trigger name in this example
    console.warn(`Animation Trigger: ${event.triggerName}`);

    // phaseName is start or done
    console.warn(`Phase: ${event.phaseName}`);

    // in our example, totalTime is 1000 or 1 second
    console.warn(`Total time: ${event.totalTime}`);

    // in our example, fromState is either open or closed
    console.warn(`From: ${event.fromState}`);

    // in our example, toState either open or closed
    console.warn(`To: ${event.toState}`);

    // the HTML element itself, the button in this case
    console.warn(`Element: ${event.element}`);
  }
}

Keyframes

In the previous section, we saw a simple two-state transition. Now we'll create an animation with multiple steps run in sequence using keyframes.

Angular's keyframe() function is similar to keyframes in CSS. Keyframes allow several style changes within a single timing segment. For example, our button, instead of fading, could change color several times over a single 2-second timespan.

[[../File:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAD0CAMAAABafyQMAAA57mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOC0wMS0xNlQxNjoxMy0wODowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE4LTAxLTE2VDE2OjE3OjQ0LTA4OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOC0wMS0xNlQxNjoxNzo0NC0wODowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo2ODE3M2E5My04M2U5LTRjMjMtYWZhZi1lMjg0ZWNjODczMzM8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDozYjlkOTQ5NS0zYmFhLTExN2ItYWFkNy1hM2RjOTQ0ZGM3Yjc8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDpkNjY1MWRjNS0wNjg3LTQ3M2QtOWQwOS0xNzg5MGM1YzUyZjg8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZDY2NTFkYzUtMDY4Ny00NzNkLTlkMDktMTc4OTBjNWM1MmY4PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTAxLTE2VDE2OjEzLTA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjgxNzNhOTMtODNlOS00YzIzLWFmYWYtZTI4NGVjYzg3MzMzPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTAxLTE2VDE2OjE3OjQ0LTA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTAwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0NDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+F6WmdwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAwBQTFRF////0dzw/4R//7x//wIB/sACssTm////////Q3LE+vr8/8CA/5+A/82A/9OARXXK/wAA09rn/4eA/6J//6uA/8OA/7l/44yVlq/Pq6W//7aA/7OA/9yA/9mA/5mA/6WA1ZOgrMDlQmKZ/8eA/4x+LVKPAQABgrff/9B/hrbck7DT/9aAmq7MpKnF/6iA/66Ap6jC/46AzpWl2ZGd64mP54qS/5yA/5aA/7GAr6S9+oOFvJ2zy5eoxJut346Y/8qA/4F8vs7rj7LV/4qA/5SA/uB/irTYnazK/5GAoarHuZ+0taG4sqG7yJmq0ZSjtMjp7oiNjbLWt5+29oSH8oaK/4+A3I+a/9+AHkGBs9DpQG29IlKTa4Gt5enwKUyL25Cbv52xxpmribXawZyv9IWInqvJ8IeL/IKD2/L+VmNpw8zcH0SFzNjusMLlvc7h3+bxNFaJ2uv+/+d8PWi0ACuYF0qO/9MANU6JkodLBU+ZQW/AFkGO2u//BTeY6uzyKFCQ/8gA/8ABlJaT3A8Z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|thumb|none|500x244px]]

The code for this color change might look like this.

transition('* => active', [
  animate('2s', keyframes([
    style({ backgroundColor: 'blue' }),
    style({ backgroundColor: 'red' }),
    style({ backgroundColor: 'orange' })
  ]))

Offset

Keyframes include an offset that defines the point in the animation where each style change occurs. Offsets are relative measures from zero to one, marking the beginning and end of the animation, respectively.

Defining offsets for keyframes is optional. If you omit them, evenly spaced offsets are automatically assigned. For example, three keyframes without predefined offsets receive offsets of 0, 0.5, and 1. Specifying an offset of 0.8 for the middle transition in the above example might look like this.

[[../File:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAD3CAMAAADc61aiAAA59GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOC0wMS0xNlQxNjoxMzoyNi0wODowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE4LTAxLTE2VDE2OjE3OjEzLTA4OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOC0wMS0xNlQxNjoxNzoxMy0wODowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo3MmUzOWIyNi03ZjY5LTQyNmMtOTM4NS00YmI2MjdjZGNkZTU8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyOTA4NmE5Mi0zYmFhLTExN2ItYWFkNy1hM2RjOTQ0ZGM3Yjc8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo0OWVjNjNjZi0zOGM1LTQzZjMtYmRhNC01MWQzZmNjNDllZDg8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NDllYzYzY2YtMzhjNS00M2YzLWJkYTQtNTFkM2ZjYzQ5ZWQ4PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTAxLTE2VDE2OjEzOjI2LTA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NzJlMzliMjYtN2Y2OS00MjZjLTkzODUtNGJiNjI3Y2RjZGU1PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTAxLTE2VDE2OjE3OjEzLTA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTAwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0NzwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+gw0+KQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAwBQTFRF////orPO/wAA0JWj/sAC2+PzrcDl////Q3LE/wIB346XoLDMoqrGyZipvp2xt6C32ZGd05Oh25CbsqK7TmyggbjfnazKpajEk7DSla/QrKW/+YKEoKvIuZ+094SGrqS99YWI8oaK64mQ8IeL7YiOQ3PGAQAC7v7//5iA/7OA/82Ama7Nh7XbhLfdmK7Oi7PYibXZzpamzJenwZyvx5mr1pKfu56ztKG54oyV5IuU/YGCobPQm7TgGD18+fn7jbLX9Pz//52A/8CA/6eAACmNWWhy/8aA/9KAO2aw/6J//66A/7t/m63M/5KAp6fCqabA+4KD3Y+Z6YqR5ouS/46A/9EAqZM7/8YA/8EA6O74qLzjE1OZ7vL5/v//Mlma/6qA/7h//8iA/9mAqafB4+v3kbDUjrLVhrbcj7LVkLLVwpyuxJutxZmsw5utCjJ3/9aAA0CNAC+ai3+gg4GlR2ab6/f/RnfNfIWrAE6aqyI6O02HWUJyRnbLhr7ndoewM1WR8wcJ/4aA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|thumb|none|500x247px]]

The code with offsets specified would be as follows.

transition('* => active', [
  animate('2s', keyframes([
    style({ backgroundColor: 'blue', offset: 0}),
    style({ backgroundColor: 'red', offset: 0.8}),
    style({ backgroundColor: 'orange', offset: 1.0})
  ])),
]),
transition('* => inactive', [
  animate('2s', keyframes([
    style({ backgroundColor: 'orange', offset: 0}),
    style({ backgroundColor: 'red', offset: 0.2}),
    style({ backgroundColor: 'blue', offset: 1.0})
  ]))
]),

You can combine keyframes with duration, delay, and easing within a single animation.

Keyframes with a pulsation

Use keyframes to create a pulse effect in your animations by defining styles at specific offset throughout the animation.

Here's an example of using keyframes to create a pulse effect:

  • The original open and closed states, with the original changes in height, color, and opacity, occurring over a timeframe of 1 second
  • A keyframes sequence inserted in the middle that causes the button to appear to pulsate irregularly over the course of that same 1-second timeframe

[[../File:data:image/png;base64,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|thumb|none|600x312px]]

The code snippet for this animation might look like this.

trigger('openClose', [
  state('open', style({
    height: '200px',
    opacity: 1,
    backgroundColor: 'yellow'
  })),
  state('close', style({
    height: '100px',
    opacity: 0.5,
    backgroundColor: 'green'
  })),
  // ...
  transition('* => *', [
    animate('1s', keyframes ( [
      style({ opacity: 0.1, offset: 0.1 }),
      style({ opacity: 0.6, offset: 0.2 }),
      style({ opacity: 1,   offset: 0.5 }),
      style({ opacity: 0.2, offset: 0.7 })
    ]))
  ])
])

Animatable properties and units

Angular's animation support builds on top of web animations, so you can animate any property that the browser considers animatable. This includes positions, sizes, transforms, colors, borders, and more. The W3C maintains a list of animatable properties on its CSS Transitions page.

For positional properties with a numeric value, define a unit by providing the value as a string, in quotes, with the appropriate suffix:

  • 50 pixels: '50px'
  • Relative font size: '3em'
  • Percentage: '100%'

If you don't provide a unit when specifying dimension, Angular assumes a default unit of pixels, or px. Expressing 50 pixels as 50 is the same as saying '50px'.

Automatic property calculation with wildcards

Sometimes you don't know the value of a dimensional style property until runtime. For example, elements often have widths and heights that depend on their content and the screen size. These properties are often challenging to animate using CSS.

In these cases, you can use a special wildcard * property value under style(), so that the value of that particular style property is computed at runtime and then plugged into the animation.

In this example, we have a trigger called shrinkOut, used when an HTML element leaves the page. The animation takes whatever height the element has before it leaves, and animates from that height to zero.

animations: [
  trigger('shrinkOut', [
    state('in', style({ height: '*' })),
    transition('* => void', [
      style({ height: '*' }),
      animate(250, style({ height: 0 }))
    ])
  ])
]

Keyframes summary

The keyframes() function in Angular allows you to specify multiple interim styles within a single transition, with an optional offset to define the point in the animation where each style change occurs.

More on Angular animations

You may also be interested in the following:

© 2010–2019 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://v7.angular.io/guide/transition-and-triggers