博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用纯 CSS 创作一个雷达扫描动画
阅读量:5321 次
发布时间:2019-06-14

本文共 2198 字,大约阅读时间需要 7 分钟。

1504257-20181124134217818-261627064.png

效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

可交互视频

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

代码解读

定义 dom,只有一个元素:

<div class="radar"></div>

居中显示:

body {    margin: 0;    height: 100vh;    display: flex;    align-items: center;    justify-content: center;    background: radial-gradient(circle at center, silver, black);}

设置容器的尺寸,背景为黑色:

.radar {    width: 8em;    height: 8em;    font-size: 32px;    background:         linear-gradient(black, black);}

在背景上画出 4 个同心圆:

.radar {    background:             repeating-radial-gradient(                transparent 0,                 transparent 0.95em,                 darkgreen 0.95em,                 darkgreen 1em),            linear-gradient(black, black);}

在背景上再画出十字坐标线:

.radar {    background:             linear-gradient(                90deg,                transparent 49.75%,                darkgreen 49.75%,                darkgreen 50.25%,                transparent 50.25%),            linear-gradient(                transparent 49.75%,                darkgreen 49.75%,                darkgreen 50.25%,                transparent 50.25%),            repeating-radial-gradient(                transparent 0,                 transparent 0.95em,                 darkgreen 0.95em,                 darkgreen 1em),            linear-gradient(black, black);}

用伪元素画出面积等于容器面积四分之一的正方形:

.radar {    position: relative;}.radar::before {    content: '';    position: absolute;    width: calc(8em / 2);    height: calc(8em / 2);}

把正方形变为有拖尾效果的扇形:

.radar::before {    background: linear-gradient(            45deg,            rgba(0, 0, 0, 0) 50%,            rgba(0, 192, 0, 1) 100%        );    border-radius: 100% 0 0 0;}

把容器改为圆形:

.radar {    border-radius: 50%;}

为容器增加一点边距,以便清晰地展示最外侧的同心圆:

.radar {    width: calc(8em + 1.5em);    height: calc(8em + 1.5em);}.radar::before {    top: calc(1.5em / 2);    left: calc(1.5em / 2);}

最后,为拖尾增加转动效果:

.radar::before {    animation: scanning 5s linear infinite;    transform-origin: 100% 100%;}@keyframes scanning {    to {        transform: rotate(360deg);    }}

大功告成!

原文地址:https://segmentfault.com/a/1190000015283286

转载于:https://www.cnblogs.com/lalalagq/p/10011838.html

你可能感兴趣的文章
MATLAB数据类型
查看>>
Lightoj 1004 - Monkey Banana Problem
查看>>
html 跨域问题-引用别人
查看>>
noip考前模板复习
查看>>
Servlet 生命周期、工作原理
查看>>
日期常用方法
查看>>
29. 代码实例-设计模式-模板方法
查看>>
Uva-673 Parentheses Balance
查看>>
Codeforces Round #306 (Div. 2) B. Preparing Olympiad dfs
查看>>
CCCC 成都信息工程大学游记
查看>>
Codeforces Round #384 (Div. 2) E. Vladik and cards 状压dp
查看>>
Codeforces Round #109 (Div. 1) 题解 【ABC】
查看>>
工资低的.Net程序员,活该你工资低
查看>>
JS判断客户端是否是iOS或者Android手机移动端
查看>>
linux常用快捷键
查看>>
(一)Activity参数传递
查看>>
Vue父子组件之间通信
查看>>
SQL查询性能优化
查看>>
web appication server
查看>>
用户与用户组
查看>>