How to build menu border animation using html & css

Today i build an Animated menu using html and CSS. I've tried to do something new, the border will be slightly animated when the mouse hover over it. No javascript used here. Just use CSS. 

Step 1: HTML

<ul>
<li><a href="">Home</a></li>
<li><a href="">About</a></li>
<li><a href="">Portfolio</a></li>
<li><a href="">Our Team</a></li>
<li><a href="">Contact</a></li>
</ul>

Style 1

Step 2: CSS

*{
  margin: 0;
  padding: 0;
}
body{
  background-color: #295;
  font-family: sans-serif;
}
ul{
  margin: 100px auto;
  width: 80%;
}
ul li{
  list-style-type: none;
  float: left;
  border-right: 1px solid rgba(0,0,0,0.2);
}
ul li:last-child{
border: none;
}
ul li a{
  display: block;
  text-decoration: none;
  padding: 10px 12px;
  font-size: 16px;
  text-align: center;
  text-transform: uppercase;
  background-color: #15aff0;
  position: relative;
}
ul li a:before{
  content: '';
  position: absolute;
  bottom: 0;
  left: 25px;
  width: 50%;
  height: 2px;
  background-color: #114d4d;
  transition: .6s;
}
ul li a:hover:before{
  content: '';
  width: 100%;
  left: 0;
}

Style 2

body{
  background-color: #298;
  font-family: sans-serif;
}
ul{
  position: absolute;
  left: 50%;
  margin: 100px auto;
  padding: 0;
  transform: translateX(-50%);
  background-color: #f5f5f5;
  width: 60%
}
ul li{
  list-style-type: none;
  display: inline-block;
}
ul li a{
  text-decoration: none;
  display: block;
  padding: 10px;
  font-size: 1.3rem;
  color: #000;
  position: relative;
  z-index: 1;
  text-transform: uppercase;
}
ul li a:hover{
}
ul li a:before{
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 0%;
  height: 100%;
  background-color: #14dff0;
  z-index: -1;
  transition: 1s;
}
ul li a:hover:before{
  width: 50%;
  left: 50%;
}
ul li a:after{
  content: '';
  position: absolute;
  bottom: 0%;
  left: 25%;
  width: 50%;
  height: 3px;
  background-color: #14dff0;
  z-index: 2;
  transition: 1s;
}
ul li a:hover:after{
  left: 0;
  height: 100%;
  width: 3px;
  transform: rotate(180deg);
}