button fill color animation

by Sreeraj Saseendran

HTML

<div class="outer">
  <div class="button" id="clickElement">
    <div class="text">button</div>
  </div>
</div>
<a href="javascript:void(0);" onclick="myFunction()" >click here</a>

CSS

.outer {
  margin: 50px;
}

.button {
  border: 1px solid black;
  border-radius: 3px;
  width: 100px;
  height: 30px;
  display: block;

  position:relative;
  overflow: hidden;
}
.button:before {
  position:absolute;
  background: red;
  content:'';
  width: 100%;
  left: -100%;
  height:100%;
  top: 0;
  opacity: .5;
  transition: left .3s ease-in;
}

.button.added {
  background-position: left bottom; 
}

.text {
  text-align: center;
  font-size: 16px;
  line-height: 30px; 
  color: black;
  transition: all .6s ease-out;
  display: block;
}

.button.added:before {
  left: 0;
}

JavaScript

function myFunction(){
var x = document.getElementById("clickElement");
x.classList.add("added");
}