Currently, the effect scales up beyond 100%. It is better to start the effect at 50% and have it finish at 100%.
For example, if we wanted to scale something from 100px to 200px. It would be best to have the element start at 200px and scale it down to 50% and than have it animate to 100%. Scaling past 100% can achieve blurry effects.
Related answer: CSS @keyframes scale text blurry
However, most of the blurry nature of that is caused by the -webkit-transform: matrix(... on the .container element in the CSS. If you scale things up, quality will be lost...
Here is an example (http://jsfiddle.net/MZf6D/1/). You will have to modify it to fix your needs but, should get you started on the right path.
.container{
width: 300px;
position: relative;
}
.outer {
background: #fff;
-webkit-transition: -webkit-transform ease-out 0.1s, background 0.2s;
-moz-transition: -moz-transform ease-out 0.1s, background 0.2s;
transition: transform ease-out 0.1s, background 0.2s;
border: 5px solid #e373ff;
height: 100px;
width: 100px;
border-radius: 50%;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
position:absolute;
right:50px;
top:0;
}
.outer .border {
border-radius: 50%;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
height: 84px;
width:84px;
border: 5px solid #fff;
background: #c22ce2;
padding: 3px;
}
.outer .effect {
-webkit-animation: sonarEffect 1.3s infinite 75ms;
-moz-animation: sonarEffect 1.3s infinite 75ms;
animation: sonarEffect 1.3s infinite 75ms;
height: 150px;
width: 150px;
border-radius: 50%;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
position: absolute;
left: -25%;
top: -25%;
-webkit-transform: scale(0.5);
-moz-transform: scale(0.5);
transform: scale(0.5);
}
@-webkit-keyframes sonarEffect {
0% {
opacity: 0.2;
}
40% {
opacity: 0.5;
box-shadow: 0 0 0 1px rgba(255,255,255,7), 0 0 4px 4px #c22ce2, 0 0 0 4px rgba(255,255,255,0.5);
}
100% {
box-shadow: 0 0 0 1px rgba(255,255,255,7), 0 0 4px 4px #c22ce2, 0 0 0 4px rgba(255,255,255,0.5);
-webkit-transform: scale(1);
opacity: 0;
}
}
@-moz-keyframes sonarEffect {
0% {
opacity: 0.2;
}
40% {
opacity: 0.5;
box-shadow: 0 0 0 1px rgba(255,255,255,7), 0 0 4px 4px #c22ce2, 0 0 0 4px rgba(255,255,255,0.5);
}
100% {
box-shadow: 0 0 0 1px rgba(255,255,255,7), 0 0 4px 4px #c22ce2, 0 0 0 4px rgba(255,255,255,0.5);
-moz-transform: scale(1);
opacity: 0;
}
}
@keyframes sonarEffect {
0% {
opacity: 0.2;
}
40% {
opacity: 0.5;
box-shadow: 0 0 0 1px rgba(255,255,255,7), 0 0 4px 4px #c22ce2, 0 0 0 4px rgba(255,255,255,0.5);
}
100% {
box-shadow: 0 0 0 1px rgba(255,255,255,7), 0 0 4px 4px #c22ce2, 0 0 0 4px rgba(255,255,255,0.5);
transform: scale(1);
opacity: 0;
}
}
img{
width:30%;
height: 30%;
}