Animated Text Opening Sequence with jQuery and CSS3

Animated Text Opening Sequence with jQuery and CSS3
File Size: 10.7 KB
Views Total:
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

In this tutorial we're going to create a fun little typography effect with jQuery and CSS3. It takes advantage of CSS3 animations and jQuery lettering plugin to help create awesome text opening sequences with animation effects (fade in/out, sliding, etc) on your web page.

How to use it:

1. Markup html structure. 

<div class="os-phrases" id="os-phrases">
<h2>Text 1</h2>
<h2>Text 2</h2>
<h2>Text 3</h2>
...
</div>

2. The CSS

.os-phrases h2 {
font-family: 'Dosis', 'Lato', sans-serif;
font-size: 70px;
font-weight: 200;
width: 100%;
overflow: hidden;
text-transform: uppercase;
padding: 0;
margin: 0;
position: absolute;
top: -2px;
left: 33px;
letter-spacing: 14px;
text-align: center;
}
.os-phrases h2, .os-phrases h2 > span {
height: 100%;
/* Centering with flexbox */
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-pack: center;
-moz-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-moz-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.os-phrases h2 > span {
margin: 0 15px;
}
.os-phrases h2 > span > span {
display: inline-block;
-webkit-perspective: 1000px;
-moz-perspective: 1000px;
perspective: 1000px;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
transform-origin: 50% 50%;
}
.os-phrases h2 > span > span > span {
display: inline-block;
color: hsla(0,0%,0%,0);
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-animation: OpeningSequence 5.2s linear forwards;
-moz-animation: OpeningSequence 5.2s linear forwards;
animation: OpeningSequence 5.2s linear forwards;
}
.os-phrases h2:nth-child(2) > span > span > span {
-webkit-animation-delay: 5s;
-moz-animation-delay: 5s;
animation-delay: 5s;
}
.os-phrases h2:nth-child(3) > span > span > span {
-webkit-animation-delay: 10s;
-moz-animation-delay: 10s;
animation-delay: 10s;
}
.os-phrases h2:nth-child(4) > span > span > span {
-webkit-animation-delay: 15s;
-moz-animation-delay: 15s;
animation-delay: 15s;
}
.os-phrases h2:nth-child(5) > span > span > span {
font-size: 150px;
-webkit-animation-delay: 21s;
-moz-animation-delay: 21s;
animation-delay: 21s;
-webkit-animation-duration: 8s;
-moz-animation-duration: 8s;
animation-duration: 8s;
}
.os-phrases h2:nth-child(6) > span > span > span {
-webkit-animation-delay: 30s;
-moz-animation-delay: 30s;
animation-delay: 30s;
}
.os-phrases h2:nth-child(7) > span > span > span {
-webkit-animation-delay: 34s;
-moz-animation-delay: 34s;
animation-delay: 34s;
}
 @-webkit-keyframes OpeningSequence {
 0% {
 text-shadow: 0 0 50px #fff;
 letter-spacing: 80px;
 opacity: 0;
 -webkit-transform: rotateY(-90deg);
}
 50% {
 text-shadow: 0 0 1px #fff;
 letter-spacing: 14px;
 opacity: 0.8;
 -webkit-transform: rotateY(0deg);
}
 85% {
 text-shadow: 0 0 1px #fff;
 opacity: 0.8;
 -webkit-transform: rotateY(0deg) translateZ(100px);
}
 100% {
 text-shadow: 0 0 10px #fff;
 opacity: 0;
 -webkit-transform: translateZ(130px);
 pointer-events: none;
}
}
 @-moz-keyframes OpeningSequence {
 0% {
 text-shadow: 0 0 50px #fff;
 letter-spacing: 80px;
 opacity: 0.2;
 -moz-transform: rotateY(-90deg);
}
 50% {
 text-shadow: 0 0 1px #fff;
 letter-spacing: 14px;
 opacity: 0.8;
 -moz-transform: rotateY(0deg);
}
 85% {
 text-shadow: 0 0 1px #fff;
 opacity: 0.8;
 -moz-transform: rotateY(0deg) translateZ(100px);
}
 100% {
 text-shadow: 0 0 10px #fff;
 opacity: 0;
 -moz-transform: translateZ(130px);
 pointer-events: none;
}
}
 @keyframes OpeningSequence {
 0% {
 text-shadow: 0 0 50px #fff;
 letter-spacing: 80px;
 opacity: 0.2;
 transform: rotateY(-90deg);
}
 50% {
 text-shadow: 0 0 1px #fff;
 letter-spacing: 14px;
 opacity: 0.8;
 transform: rotateY(0deg);
}
 85% {
 text-shadow: 0 0 1px #fff;
 opacity: 0.8;
 transform: rotateY(0deg) translateZ(100px);
}
 100% {
 text-shadow: 0 0 10px #fff;
 opacity: 0;
 transform: translateZ(130px);
 pointer-events: none;
}
}
.os-phrases h2:nth-child(8) > span > span > span {
font-size: 30px;
-webkit-animation: FadeIn 4s linear 40s forwards;
-moz-animation: FadeIn 4s linear 40s forwards;
animation: FadeIn 4s linear 40s forwards;
}
 @-webkit-keyframes FadeIn {
 0% {
 opacity: 0;
 text-shadow: 0 0 50px #fff;
}
 100% {
 opacity: 0.8;
 text-shadow: 0 0 1px #fff;
}
}
 @-moz-keyframes FadeIn {
 0% {
 opacity: 0;
 text-shadow: 0 0 50px #fff;
}
 100% {
 opacity: 0.8;
 text-shadow: 0 0 1px #fff;
}
}
 @keyframes FadeIn {
 0% {
 opacity: 0;
 text-shadow: 0 0 50px #fff;
}
 100% {
 opacity: 0.8;
 text-shadow: 0 0 1px #fff;
}
}
/* Bold words */
.os-phrases h2:first-child .word3, .os-phrases h2:nth-child(2) .word2, .os-phrases h2:nth-child(4) .word2 {
font-weight: 600;
}

3. Include jQuery and jQuery lettering plugin on the page

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="js/jquery.lettering.js"></script> 

4. The javascript

<script>
$(document).ready(function() {
$("#os-phrases > h2").lettering('words').children("span").lettering().children("span").lettering(); 
})
</script>

This awesome jQuery plugin is developed by MARY LOU. For more Advanced Usages, please check the demo page or visit the official website.