In the following example, we’ve animated state transitions using CSS in a Blazor app.
When the state is changed, adding and removing the property values for every state transition is animated.
Create a separate reusable component (.razor) in the Pages folder and add the animation.
[Pages/AnimeState.razor]
<div class="container @(IsShown?"spin-in":"fade-out")">
<span>@(Name??"")</span>
</div>
<style>
.container{
display:inline-block;
width:@width;
height:@height;
color:white;
background-color:blue;
}
.fade-out{
animation: fade @AnimationTime linear forwards;
}
.spin-in{
animation: spin @AnimationTime linear forwards;
}
@@keyframes fade {
0% {opacity:1;}
99% {width:@width; height:@height;}
100% {width:0px;height:0px; opacity:0;}
}
@@keyframes spin {
0% {width:0px;height:0px; transform: rotate(0deg);}
99% {width:@width; height:@height;}
100% {width:@width;height:@height;transform: rotate(1440deg);}
}
</style>
@code {
string width = "100px";
string height = "20px";
[Parameter] public string Name { get; set; }
[Parameter] public string AnimationTime { get; set; }
[Parameter] public bool IsShown { get; set; }
}
Add the AnimeState.razor component and define the property value to be animated when the state has been changed.
[Index.razor]
@page "/"
<button class="btn btn-primary" @onclick="OnButtonClick">Switch</button>
<AnimeState Name="Blazor" AnimationTime="2s" IsShown=@isShown />
<span>State transition Animation</span>
@code{
bool isShown = true;
private void OnButtonClick()
{
isShown = !isShown;
}
}
Share with