博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端每日实战:51# 视频演示如何用纯 CSS 创作一个雷达扫描动画
阅读量:5903 次
发布时间:2019-06-19

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

图片描述

效果预览

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

可交互视频

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

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

源代码下载

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

代码解读

定义 dom,只有一个元素:

居中显示:

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);    }}

大功告成!

转载地址:http://yyupx.baihongyu.com/

你可能感兴趣的文章
minio 并发数_MinIO 参数解析与限制
查看>>
flash back mysql_mysqlbinlog flashback 使用最佳实践
查看>>
mysql存储引擎模式_MySQL存储引擎
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
WinForm窗体缩放动画
查看>>
JQuery入门(2)
查看>>
linux文件描述符
查看>>
传值引用和调用引用的区别
查看>>
hyper-v 无线网连接
查看>>
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>