Hope this is what you want.
To make the border animation slow, just increase the time delay. Like I've done here.
.circle:hover {
animation: border 2s ease 1 forwards;
}
updated code
EDITED
html {
height: 100%;
}
body {
height: 100%;
background: #ddd;
}
.header{
width:100%;
height:100px;
background:cyan;
z-index: 9999;
}
.circle_holder {
width: 150px;
margin: 0 auto;
padding: 10px;
overflow: hidden;
}
.circle {
position: relative;
width: 120px;
height: 120px;
border-radius: 50%;
background: red;
box-shadow: 60px -60px 0 2px #dddddd, -60px -60px 0 2px #dddddd, -60px 60px 0 2px #dddddd, 60px 60px 0 2px #dddddd, 0 0 0 2px #dddddd;
}
.circle:hover {
animation: border 2s ease 1 forwards;
cursor: pointer;
}
@keyframes border {
0% {
box-shadow: 60px -60px 0 2px #dddddd, -60px -60px 0 2px #dddddd, -60px 60px 0 2px #dddddd, 60px 60px 0 2px #dddddd, 0 0 0 2px black;
}
25% {
box-shadow: 0 -125px 0 2px #dddddd, -60px -60px 0 2px #dddddd, -60px 60px 0 2px #dddddd, 60px 60px 0 2px #dddddd, 0 0 0 2px black;
}
50% {
box-shadow: 0 -125px 0 2px #dddddd, -125px 0px 0 2px #dddddd, -60px 60px 0 2px #dddddd, 60px 60px 0 2px #dddddd, 0 0 0 2px black;
}
75% {
box-shadow: 0 -125px 0 2px #dddddd, -125px 0px 0 2px #dddddd, 0px 125px 0 2px #dddddd, 60px 60px 0 2px #dddddd, 0 0 0 2px black;
}
100% {
box-shadow: 0 -125px 0 2px #dddddd, -125px 0px 0 2px #dddddd, 0px 125px 0 2px #dddddd, 120px 40px 0 2px #dddddd, 0 0 0 2px black;
}
}
span {
position: absolute;
bottom: -50px;
color: #333;
text-transform: uppercase;
text-align: center;
font-weight: bold;
}
<div class="header">
</div>
<div class="circle_holder" style="z-index: 1;">
<div class="circle">
<span>Lorem Ipsum Dolor </span>
</div>
</div>