工具:VScode
技术:HTML5+CSS3
运用C3动画 keyframes 改变波纹大小实现
效果图:
完整代码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
background-color: #333;
}
.bgimg {
/* 设置地图背景图 */
position: relative;
width: 747px;
height: 617px;
background: url(img/map.png) no-repeat;
margin: 0 auto;
}
.city {
position: absolute;
top: 225px;
right: 185px;
transition: all 0.5s;
}
.tb {
/* 台北位置 */
top: 500px;
right: 80px;
}
.gz {
/* 广州位置 */
top: 534px;
right: 185px;
}
.dotted {
/* 设置中心圆点 */
color: #fff;
width: 8px;
height: 8px;
background-color: #09f;
border-radius: 50%;
}
.city div[class^="pulse"] {
/* 保证这三个小波纹子父盒子的中心位置 */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 8px;
height: 8px;
box-shadow: 0 0 12px #09f;
border-radius: 50%;
/* 调用动画 */
animation: pulse 1.3s linear infinite;
}
@keyframes pulse {
/* 定义动画 宽度高度透明度的变化 */
0% {}
70% {
width: 30px;
height: 30px;
opacity: 1;
}
100% {
width: 60px;
height: 60px;
opacity: 0;
}
}
.city div.pulse2 {
/* 延迟时间 0.4秒 */
animation-delay: 0.4s;
}
.city div.pulse3 {
/* 延迟时间 0.8秒 */
animation-delay: 0.8s;
}
</style>
</head>
<body>
<div class="bgimg">
<div class="city">
<div class="dotted"></div>
<div class="pulse1"></div>
<div class="pulse2"></div>
<div class="pulse3"></div>
</div>
<div class="city tb">
<div class="dotted"></div>
<div class="pulse1"></div>
<div class="pulse2"></div>
<div class="pulse3"></div>
</div>
<div class="city gz">
<div class="dotted"></div>
<div class="pulse1"></div>
<div class="pulse2"></div>
<div class="pulse3"></div>
</div>
</div>
</body>
</html>