.ripple {
box-sizing:border-box;
width:200px;
height:200px;
border-right:20px solid red;
border-top:20px solid red;
border-bottom:20px solid transparent;
border-left:20px solid transparent;
box-shadow:0px 0px 0 20px #fff inset,
0px 0px 0 40px red inset,
0px 0px 0 60px #fff inset,
0px 0px 0 80px red inset;
border-radius:50%;
transform:rotate(-45deg);
position:relative;
animation:pulse 2s infinite linear;
}
.ripple:before {
content:"";
position:absolute;
bottom:0;
top:0;
left:0;
right:0;
background:linear-gradient(to top right,#fff 50%,transparent 50%);
z-index:1;
}
@keyframes pulse {
0% {
border-right-color: rgba(255, 0, 0, 1);
border-top-color:rgba(255, 0, 0, 1);
box-shadow:0px 0px 0 20px #fff inset,
0px 0px 0 40px rgba(255, 0, 0, 1) inset,
0px 0px 0 60px #fff inset,
0px 0px 0 80px rgba(255, 0, 0, 1) inset;
}
25% {
border-right-color: rgba(255, 0, 0, 1);
border-top-color:rgba(255, 0, 0, 1);
box-shadow:0px 0px 0 20px #fff inset,
0px 0px 0 40px rgba(255, 0, 0, 1) inset,
0px 0px 0 60px #fff inset,
0px 0px 0 80px rgba(255, 0, 0, 0.5) inset;
}
50% {
border-right-color: rgba(255, 0, 0, 1);
border-top-color:rgba(255, 0, 0, 1);
box-shadow:0px 0px 0 20px #fff inset,
0px 0px 0 40px rgba(255, 0, 0, 0.5) inset,
0px 0px 0 60px #fff inset,
0px 0px 0 80px rgba(255, 0, 0, 1) inset;
}
75% {
border-right-color: rgba(255, 0, 0, 0.5);
border-top-color:rgba(255, 0, 0, 0.5);
box-shadow:0px 0px 0 20px #fff inset,
0px 0px 0 40px rgba(255, 0, 0, 1) inset,
0px 0px 0 60px #fff inset,
0px 0px 0 80px rgba(255, 0, 0, 1) inset;
}
100% {
border-right-color: rgba(255, 0, 0, 1);
border-top-color:rgba(255, 0, 0, 1);
box-shadow:0px 0px 0 20px #fff inset,
0px 0px 0 40px rgba(255, 0, 0, 1) inset,
0px 0px 0 60px #fff inset,
0px 0px 0 80px rgba(255, 0, 0, 1) inset;
}
}
<div class="ripple">
</div>