Skip to content

Instantly share code, notes, and snippets.

@arcanoix
Created May 21, 2017 05:21
Show Gist options
  • Save arcanoix/4f9d2d42331fafabd53759038e246ea7 to your computer and use it in GitHub Desktop.
Save arcanoix/4f9d2d42331fafabd53759038e246ea7 to your computer and use it in GitHub Desktop.
Text animation
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<div class="content">
<div class="content__container">
<p class="content__container__text">
Hello
</p>
<ul class="content__container__list">
<li class="content__container__list__item">Function !</li>
<li class="content__container__list__item">Graphics !</li>
<li class="content__container__list__item">working !</li>
<li class="content__container__list__item">site !</li>
<li class="content__container__list__item">coming !</li>
<li class="content__container__list__item">soon !</li>
</ul>
</div>
</div>
// Twitter @YoannHELIN
body {
width: 100%;
height: 100%;
position: fixed;
background-color: #34495e;
}
.content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 160px;
overflow:hidden;
font-family: 'Lato', sans-serif;
font-size: 35px;
line-height: 40px;
color: #ecf0f1;
&__container {
font-weight: 600;
overflow: hidden;
height: 40px;
padding: 0 40px;
&:before {
content: '[';
left: 0;
}
&:after {
content: ']';
position: absolute;
right: 0;
}
&:after, &:before {
position: absolute;
top: 0;
color: #16a085;
font-size: 42px;
line-height: 40px;
-webkit-animation-name: opacity;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: infinite;
animation-name: opacity;
animation-duration: 2s;
animation-iteration-count: infinite;
}
&__text {
display: inline;
float: left;
margin: 0;
}
&__list {
margin-top: 0;
padding-left: 110px;
text-align: left;
list-style: none;
-webkit-animation-name: change;
-webkit-animation-duration: 10s;
-webkit-animation-iteration-count: infinite;
animation-name: change;
animation-duration: 10s;
animation-iteration-count: infinite;
&__item {
line-height:40px;
margin:0;
}
}
}
}
@-webkit-keyframes opacity {
0%, 100% {opacity:0;}
50% {opacity:1;}
}
@-webkit-keyframes change {
0%, 12.66%, 100% {transform:translate3d(0,0,0);}
16.66%, 29.32% {transform:translate3d(0,-25%,0);}
33.32%,45.98% {transform:translate3d(0,-50%,0);}
49.98%,62.64% {transform:translate3d(0,-75%,0);}
66.64%,79.3% {transform:translate3d(0,-50%,0);}
83.3%,95.96% {transform:translate3d(0,-25%,0);}
}
@-o-keyframes opacity {
0%, 100% {opacity:0;}
50% {opacity:1;}
}
@-o-keyframes change {
0%, 12.66%, 100% {transform:translate3d(0,0,0);}
16.66%, 29.32% {transform:translate3d(0,-25%,0);}
33.32%,45.98% {transform:translate3d(0,-50%,0);}
49.98%,62.64% {transform:translate3d(0,-75%,0);}
66.64%,79.3% {transform:translate3d(0,-50%,0);}
83.3%,95.96% {transform:translate3d(0,-25%,0);}
}
@-moz-keyframes opacity {
0%, 100% {opacity:0;}
50% {opacity:1;}
}
@-moz-keyframes change {
0%, 12.66%, 100% {transform:translate3d(0,0,0);}
16.66%, 29.32% {transform:translate3d(0,-25%,0);}
33.32%,45.98% {transform:translate3d(0,-50%,0);}
49.98%,62.64% {transform:translate3d(0,-75%,0);}
66.64%,79.3% {transform:translate3d(0,-50%,0);}
83.3%,95.96% {transform:translate3d(0,-25%,0);}
}
@keyframes opacity {
0%, 100% {opacity:0;}
50% {opacity:1;}
}
@keyframes change {
0%, 12.66%, 100% {transform:translate3d(0,0,0);}
16.66%, 29.32% {transform:translate3d(0,-25%,0);}
33.32%,45.98% {transform:translate3d(0,-50%,0);}
49.98%,62.64% {transform:translate3d(0,-75%,0);}
66.64%,79.3% {transform:translate3d(0,-50%,0);}
83.3%,95.96% {transform:translate3d(0,-25%,0);}
}
// 6 is the number of animation.
// Here, there are 4 lines :
// 1 to 2
// 2 to 3
// 3 to 4
// 4 to 3
// 3 to 2
// 2 to 1
// 6x + 6y = 100 (100% duration)
// HERE :
// y = 4 -> Animation between two lines
// x = 12.66 -> Time spent on a line
// You can define a value and calculate the other if you want change speed or the number of lines
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment