这是一款使用CSS来制作的逼真的雷达扫描效果。该效果通过CSS渐变和CSS动画,来模拟出逼真的雷达扫描效果,非常炫酷。
使用方法
HTML代码
<div class="container"> <div class="canvas"> <div class="outer-circle"> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <div class="radar"></div> <div class="main-circle"> <p></p> <p></p> <span style="--deg:0deg;"></span> <span style="--deg:45deg;"></span> <span style="--deg:90deg;"></span> <span style="--deg:135deg;"></span> </div> </div> </div> </div>
CSS代码
* { margin: 0; padding: 0; box-sizing: border-box; /* Color variables */ --bg-color: #202020; --green: #0ef30f; /* Dimentions variables */ --canvas-size: 70vmin; --outer-circle: 55vmin; --main-circle: 50vmin; /* Border variabes */ --border-width: 0.5vmin; --border: var(--border-width) solid var(--green); } *::after, *::before { box-sizing: border-box; content: ""; position: absolute; } .container { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; height: 100vh; width: 100%; overflow: hidden; background-color: var(--bg-color); display: flex; justify-content: center; align-items: center; } .canvas { width: var(--canvas-size); height: var(--canvas-size); background: var(--bg-color); display: flex; align-items: center; justify-content: center; } .outer-circle { position: absolute; height: var(--outer-circle); width: var(--outer-circle); border-radius: 50%; border: var(--border); display: flex; align-items: center; justify-content: center; } .outer-circle i { position: absolute; height: var(--outer-circle); width: var(--border-width); border: var(--border); } .outer-circle i:nth-child(2) { transform: rotate(22.5deg); } .outer-circle i:nth-child(3) { transform: rotate(45deg); } .outer-circle i:nth-child(4) { transform: rotate(67.5deg); } .outer-circle i:nth-child(5) { transform: rotate(90deg); } .outer-circle i:nth-child(6) { transform: rotate(112.5deg); } .outer-circle i:nth-child(7) { transform: rotate(135deg); } .outer-circle i:nth-child(8) { transform: rotate(157.5deg); } .main-circle { position: absolute; height: var(--main-circle); width: var(--main-circle); border-radius: 50%; border: var(--border); /* background: var(--bg-color); */ display: flex; justify-content: center; align-items: center; } .main-circle p { position: absolute; width: calc(var(--main-circle) - 10vmin); height: calc(var(--main-circle) - 10vmin); border: var(--border); border-radius: 50%; } .main-circle p:nth-child(2) { width: calc(var(--main-circle) - 25vmin); height: calc(var(--main-circle) - 25vmin); } span { position: absolute; height: var(--main-circle); width: 0.2vmin; background: var(--green); transform: rotate(var(--deg)); } .radar { position: absolute; height: var(--main-circle); width: var(--main-circle); border-radius: 50%; background-image: conic-gradient( rgb(26, 212, 26), rgb(27, 100, 27), rgb(37, 92, 37), rgb(27, 85, 27), rgb(0, 0, 0) ); animation: radar linear infinite 5s; } /* Animation Part */ @keyframes radar { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }