Here is a method to do a sonar style pinging dot with CSS animations. The outcome will look like this
Firstly you will need an SVG dot you can create one with this code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64">
<circle r="30" cx="32" cy="32" style="fill:#A27FEF;stroke-width:0" />
</svg> Now for two HTML elements. One is a stationary dot (marker) and the other an overlay (ping) that will animate scale and oppacity giving the ping effect.
HTML:
<div class="marker"></div> <div class="ping"></div>
The CSS most importantly has the animations to which you can tinker with
CSS:
body {
background-color: #28140c;
}
.marker {
width: 8%;
height: 8%;
background-image: url(dot1.svg);
background-position: top center;
background-repeat: no-repeat;
background-size: contain;
position: absolute;
}
.ping {
width: 8%;
height: 8%;
background-image: url(dot1.svg);
background-position: top center;
background-repeat: no-repeat;
background-size: contain;
position: absolute;
-webkit-animation: pulse 2s ease-out;
-moz-animation: pulse 2s ease-out;
animation: pulse 2s ease-out;
-webkit-animation-iteration-count: infinite;
-moz-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
@-moz-keyframes pulse {
0% {
-moz-transform: scale(1.1);
opacity: 0.9;
}
10% {
-moz-transform: scale(1.2);
opacity: 0.8;
}
20% {
-moz-transform: scale(1.3);
opacity: 0.7;
}
30% {
-moz-transform: scale(1.4);
opacity: 0.6;
}
40% {
-moz-transform: scale(1.5);
opacity: 0.5;
}
50% {
-moz-transform: scale(1.6);
opacity: 0.4;
}
60% {
-moz-transform: scale(1.7);
opacity: 0.3;
}
70% {
-moz-transform: scale(1.8);
opacity: 0.2;
}
80% {
-moz-transform: scale(1.9);
opacity: 0.1;
}
90% {
-moz-transform: scale(2);
opacity: 0;
}
100% {
-moz-transform: scale(2);
opacity: 0;
}
}
@keyframes pulse {
0% {
-moz-transform: scale(1.1);
opacity: 0.9;
}
10% {
-moz-transform: scale(1.2);
opacity: 0.8;
}
20% {
-moz-transform: scale(1.3);
opacity: 0.7;
}
30% {
-moz-transform: scale(1.4);
opacity: 0.6;
}
40% {
-moz-transform: scale(1.5);
opacity: 0.5;
}
50% {
-moz-transform: scale(1.6);
opacity: 0.4;
}
60% {
-moz-transform: scale(1.7);
opacity: 0.3;
}
70% {
-moz-transform: scale(1.8);
opacity: 0.2;
}
80% {
-moz-transform: scale(1.9);
opacity: 0.1;
}
90% {
-moz-transform: scale(2);
opacity: 0;
}
100% {
-moz-transform: scale(2);
opacity: 0;
}
} You can view a live example at CodePen here.
A drained and empty Kennington reservoir images from a drone in early July 2024. The…
Merrimu Reservoir from drone. Click images to view larger.
Using FTP and PHP to get an array of file details such as size and…
Creating and using Laravel form requests to create cleaner code, separation and reusability for your…
Improving the default Laravel login and register views in such a simple manner but making…
Laravel validation for checking if a field value exists in the database. The validation rule…