This is solved on the page using JavaScript and CSS. CSS is responsible for the animation, JavaScript is used to replace the content (the text that is animated).
In CSS there is a section in which the animation is defined:
.flipInX {
-webkit-backface-visibility:visible!important;
backface-visibility:visible!important;
-webkit-animation-name:flipInX;
animation-name:flipInX;
}
@-webkit-keyframes flipInX {
from {
-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);
transform:perspective(400px) rotate3d(1,0,0,90deg);
-webkit-animation-timing-function:ease-in;
animation-timing-function:ease-in;
opacity:0
}
40% {
-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);
transform:perspective(400px) rotate3d(1,0,0,-20deg);
-webkit-animation-timing-function:ease-in;
animation-timing-function:ease-in
}
60% {
-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);
transform:perspective(400px) rotate3d(1,0,0,10deg);
opacity:1
}
80% {
-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);
transform:perspective(400px) rotate3d(1,0,0,-5deg)
}
to {
-webkit-transform:perspective(400px);
transform:perspective(400px)
}
}
As I had already guessed, the text within an animation is rotated using transform. This can also be done with pure CSS, the JavaScript is only used to replace the text, which then triggers the CSS animation.