body {
font-family: "Helvetica Neue", sans-serif;
background: #f8f8f8;
}
.promo {
color: #fff;
text-align: center;
}
.promo__button {
border: 1px solid #fff;
display: inline-block;
position: relative;
margin-top: 1.5em;
font-size: 24px;
padding: 20px 50px;
text-decoration: none;
text-transform: uppercase;
font-weight: 700;
line-height: 1;
letter-spacing: .025em;
text-align: center;
color: #fff;
background: #E21710;
overflow: hidden;
transition: transform 0.5s cubic-bezier(0.77, 0, 0.175, 1);
}
.promo__button:after {
content: '';
position: absolute;
display: block;
left: 0;
top: 0;
height: 100%;
width: 100%;
background: #fff;
transform: scaleY(0);
transform-origin: bottom;
transition: all 0.5s cubic-bezier(0.77, 0, 0.175, 1);
}
.text {
transform: matrix(1, 0, 0, 1, 0, 0);
display: block;
transition: transform 0.5s cubic-bezier(0.77, 0, 0.175, 1);
}
.arrow {
position: absolute;
top: 50%;
transform: translate(-300%, -50%);
width: 80px;
height: 1px;
background: #E21710;
display: inline-block;
z-index: 1;
visibility: hidden;
opacity: 0;
transition: all 0.5s cubic-bezier(0.77, 0, 0.175, 1);
}
.arrow:after,
.arrow:before {
content: '';
position: absolute;
right: -3px;
display: block;
width: 20px;
height: 1px;
background: #E21710;
z-index: 2;
}
.arrow:after {
top: 7px;
transform: rotate(-45deg);
}
.arrow:before {
transform: rotate(45deg);
top: -7px;
}
.promo__button:hover .text {
transform: translateX(200%);
}
.promo__button:hover .arrow {
visibility: visible;
opacity: 1;
transform: translate(-50%, -50%);
}
.promo__button:hover {
box-shadow: 0 0 37px 10px rgba(0, 0, 0, 0.02);
}
.promo__button:hover:after {
transform: scaleY(1);
}
<div class="promo">
<a href="#" class="promo__button" data-module="modules/AnimatedArrowButton" data-contact-button>
<span class="text">Tell me more</span>
<span class="arrow"></span>
</a>
</div>