CSS实现雷达图效果

简介: CSS实现雷达图效果

效果图

image.png

页面结构

我们通过让#app盒子占满全屏,在里面声明一个类名为radar的盒子,这个是用来承载雷达样式的盒子,里面有两个无序列表,分别代表了雷达的方向标识和雷达的范围标识,在声明一个类名为scanning盒子,用于实现扫描的效果

<div id="app">
        <div class="radar">
            <!-- 雷达线 -->
            <ul class="radar_line">
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <!-- 雷达圈范围 -->
            <ul class="radar_circle">
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <!-- 雷达扫描 -->
            <div class="scanning"></div>
        </div>
    </div>

初始样式

我们将所有元素的内外边距清空,清空之后在使用#app盒子铺满全屏且背景色设置为黑色,结合flex布局让里面的内容垂直水平居中

* {
          margin: 0;
            padding: 0;
            list-style: none;
        }
        #app {
            width: 100vw;
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background: #000;
        }

雷达样式实现

我们给.radar盒子设置大小,通过css属性设置成圆形,边框设置为白色,在让溢出的内容隐藏起来

/* 雷达大盒子 */
        .radar {
            position: relative;
            width: 400px;
            height: 400px;
            border-radius: 50%;
            border: 10px solid #fff;
            background: #000;
            overflow: hidden;
        }

雷达方向标识实现

雷达方向标识我们这里采用无序列表进行实现,给无序列表中的子元素设置好宽高和背景色,在通过定位结合css旋转属性,实现出方向分割的效果

/* 雷达线 */
        .radar_line li {
            position: absolute;
            top: 0;
            left: 50%;
            background: #00ff00;
            width: 1px;
            height: 100%;
        }
        .radar_line>li:nth-child(1) {
            transform: rotate(45deg);
        }
        .radar_line>li:nth-child(2) {
            transform: rotate(90deg);
        }
        .radar_line>li:nth-child(3) {
            transform: rotate(135deg);
        }

雷达范围标识实现

雷达范围标识我们这里也是用无序列表进行实现,通过定位让子盒子全部都水平垂直居中显示,然后再设置每一个子盒子不同的大小,实现出扫描范围的效果

/* 雷达圈 */
        .radar_circle li {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            border: 1px solid #00ff00;
            border-radius: 50%;
        }
        .radar_circle>li:nth-child(1) {
            width: 100px;
            height: 100px;
        }
        .radar_circle>li:nth-child(2) {
            width: 200px;
            height: 200px;
        }
        .radar_circle>li:nth-child(3) {
            width: 300px;
            height: 300px;
        }

雷达扫描效果实现

雷达扫描效果我们通过.scanning盒子实现,宽度高度是整个雷达盒子的一半,通过定位,定位到距离头部50%,左边50%,这样该盒子的左上角就在雷达盒子的正中心了,我们使用css设置旋转中心点,设置到左上角,在使用背景属性实现渐变,最后通过css动画让他进行旋转,这样扫描的效果就实现了!

/* 扫描 */
        .scanning {
            position: absolute;
            top: 50%;
            left: 50%;
            width:200px;
            height: 200px;
            background: linear-gradient(45deg, #00ff00 0%, transparent 50%);
            animation: investigation  2s infinite linear;
            transform-origin: left top;
        }
 @keyframes investigation  {
            from {
                transform: rotate(0deg);
            }
            to {
                transform: rotate(360deg);
            }
        }

代码我放到码上掘金上了,感兴趣的可以看一看!

image.png

相关文章
【最简洁】一句CSS3代码实现不规则自定义背景图拼接样式,多用于异形弹窗背景图
【最简洁】一句CSS3代码实现不规则自定义背景图拼接样式,多用于异形弹窗背景图
|
缓存 前端开发 UED
CSS精灵图:提高网站性能的秘密武器
CSS精灵图:提高网站性能的秘密武器
311 0
|
前端开发
HTML和CSS拼成的像素图
HTML和CSS拼成的像素图
172 0
|
前端开发 安全 容器
CSS基本知识之复合选择器、元素显示模式、背景图片位置,精灵图(二)
CSS基本知识之复合选择器、元素显示模式、背景图片位置,精灵图
|
前端开发
CSS基本知识之复合选择器、元素显示模式、背景图片位置,精灵图(一)
CSS基本知识之复合选择器、元素显示模式、背景图片位置,精灵图
|
前端开发 容器
「CSS畅想」七夕寄情,我绘制了一副双色莲花图
用技术实现梦想,用梦想打开创意之门。七夕寄情,我用CSS绘制了一副双色莲花图。
396 1
「CSS畅想」七夕寄情,我绘制了一副双色莲花图
|
前端开发
Echarts实战案例代码(49):基于不支持立体漏斗图Funnel的HTML+CSS解决方案
Echarts实战案例代码(49):基于不支持立体漏斗图Funnel的HTML+CSS解决方案
518 0
|
前端开发 容器
探索css渐变-实现饼图-加载图-灯柱
探索css渐变-实现饼图-加载图-灯柱
339 0
|
前端开发 开发者 UED
一文搞懂css中精灵图如何使用
一文搞懂css中精灵图如何使用
一文搞懂css中精灵图如何使用

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    510
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    394
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    384
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    253
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    501
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    674
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1180
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    266
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    979
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    452