<section>
<div class="center">
<h4>Normal State</h4>
<a class="button" href="#0">
<span>
<em>Download</em>
<i class="fa fa-download"></i>
</span>
</a>
<br>
<br>
<h4>Hover state</h4>
<br>
<br>
<br>
<a class="button hover" href="#0">
<span>
<em>Download</em>
<i class="fa fa-download"></i>
</span>
</a>
</div>
</section>
@import url(https://fonts.googleapis.com/css?family=Montserrat);
*,
*::after,
*::before {
box-sizing: border-box;
}
body {
background: #39393A;
font-size: 1.2rem;
font-family: Montserrat;
letter-spacing: 1px;
color: white;
}
a {
text-decoration: none;
color: white;
}
em {
font-style: normal;
}
section {
width: 100%;
height: 100vh;
display: table;
}
section .center {
display: table-cell;
text-align: center;
vertical-align: middle;
}
.button {
position: relative;
background: #E75A7C;
display: inline-block;
height: 60px;
width: 200px;
border-radius: 50em;
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.7), inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
span,
em,
i {
position: absolute;
width: 100%;
height: 100%;
left: 0;
}
span {
overflow: hidden;
}
.button em {
top: 0;
line-height: 60px;
}
.button i {
top: 100%;
line-height: 60px;
}
.button:hover em,
.button.hover em{
top: -100%;
}
.button:hover i,
.button.hover i{
top: 0%;
}
em,
i {
transition: top 0.3s;
}
.button::before,
.button::after {
position: absolute;
opacity: 0;
visibility: hidden;
transition: all 0.3s;
}
.button::before {
content: 'File Size: 5mb';
width: 160px;
height: 60px;
background: #0E84A1;
border-radius: 0.25em;
bottom: 90px;
line-height: 60px;
left: calc(50% - 80px);
font-size: 15px;
}
.button::after {
content: '';
width: 0px;
height: 0px;
border: 10px solid transparent;
border-top-color: #0E84A1;
bottom: 70px;
left: calc(50% - 10px);
}
.button:hover::before,
.button:hover::after,
.button.hover::before,
.button.hover::after{
opacity: 1;
visibility: visible;
}
.button:hover::before,
.button.hover::before{
bottom: 80px;
}
.button:hover::after,
.button.hover::after{
bottom: 60px;
}
This Pen doesn't use any external JavaScript resources.