<a href="#" class="btn">Some text</a>
body {
  margin: 50px;
  padding: 0;
  background-color: #CCC;
}

.btn {
  text-decoration: none;
  display: inline-block;
  background-color: #fff;
  padding: 20px 20px 20px 80px;
  border-radius: 5px;
  position: relative;
  overflow: hidden;
  color: #000;
  font-family: sans-serif;
  transition: all 0.5s;
  box-shadow: 0px 12px 60px -8px rgba(0,0,0,0.14);
}

.btn:hover {
  background-color: #3f2b6a;
  color: #FFF;
  padding: 20px 50px 20px 50px;
}

.btn:hover:before, .btn:hover:after {
  left: 120%;
}

.btn:before {
  content: "";
  display: block;
  position: absolute;
  left: -100%;
  top: 0;
  width: 122%;
  height: 100%;
  background-color: #3f2b6a;
  transition: all 0.4s;
}

.btn:after {
  content: "";
  display: block;
  position: absolute;
  left: 14px;
  top: 50%;
  width: 46px;
  height: 46px;
  background-color: #3f2b6a;
  transform: rotate(45deg) translateY(-50%);
  border-radius: 11px 5px;
  transform-origin: center top;
  transition: all 0.4s;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.