【附源码】牺牲两天摸鱼时间,我做了款大屏

boyanx5个月前技术教程28

项目背景

最近时间比较闲,摸鱼的时间越来越多了,人一闲下来就会想做点什么。说干就干,立马行动。

在刷了半小时 pdd 之后我买了张 ui 图,并根据这个 ui 做了一个大屏。

最终效果如下:

如果你没有挂梯子的话,会访问不了。访问不了的话,建议直接本地跑项目。

技术栈

技术
版本
用途
**Vue**
3.5.13
前端框架
**TypeScript**
5.7.2
类型安全
**Vite**
6.1.0
构建工具
**ECharts**
5.6.0
数据可视化
**Sass**
1.89.2
CSS预处理器
**Vue3-scroll-seamless**
1.0.6
无缝滚动
**autofit.js**
3.2.8
适配不同分辨率的屏幕
**vue3-odometer**
0.1.3
数字翻牌效果

项目主要是 vue3 + echarts 的组合,整个项目主要都是一些图表的应用。下面会介绍一些模块的实现思路。

一些模块的实现

中间地图

第一步先获取地图行政区的 geo 数据,以我这个项目为例,我需要获取山东省的地图数据。

打开 dataV ,找到数据可视化学院,在里面找到需要的行政区,把它的 geojson 下载下来。

下载下来的数据长这样

这就是我们需要的 geojson 数据了。

拿到数据之后,就需要将其渲染出来。

这里我用的是 echarts 的地图。因为这个项目的地图,基本没有交互,就纯纯的数据展示。使用 echarts 来做的 效果会比, cesium 那些更好。

注册地图

import * as echarts from 'echarts'
import sdData from '@/assets/data/山东省'
echarts.registerMap('sd', sdData as any)

先将前面下载来的数据 geojson 数据注册到 echarts 里面,并配置 echarts geo 选项

{
geo: [
// 最外围发光边界
{
map: 'sd',
aspectScale: 0.85,
layoutCenter: ['50%', '50%'], //地图位置
layoutSize: '100%',
z: 12,
emphasis: {
disabled: true
},
itemStyle: {
normal: {
borderColor: 'rgb(180, 137, 81)',
borderWidth: 8,
shadowColor: 'rgba(218, 163, 88, 0.4)',
shadowBlur: 20
}
}
},
],
}

这时候渲染出来的地图是纯色的,什么都没有 也没有立体。

因为这个 geo 是一个平面的地图,想要立体效果,可以通过堆叠地图,并且设置位移的方式实现

比如我这边就通过这种方式去实现

通过叠加多个图层,并且每个图层的 layoutCenter 都不同

最终就可以实现这种看起来很立体的二维地图

底部的数字字体和轮播

可以看到我底部的数字字体很特别,这不是图片,这是一种电子屏风格的数字字体。

我们在网上找一个类似的字体,将其下载下来,并用 css @font-face 将其引入。然后在需要的地方用 font-family 使用即可。


除了这个,这里还有一个数字的轮播效果,我是用 vue3-odometer 实现的。

为什么用这个库呢,主要是使用方便,不用配置一堆乱七八糟的。

其他图表

其它图表就比较常规了,这里就不做过多介绍,具体可以看源码的实现。

结尾

这个大屏虽然只有一个页面,但是做的时候,相关的图表配置调整还是挺多的。后续打算开发一个mini版的后台管理,用来管理大屏数据,并且这个后台管理的接口用 node 开发,用来当作 node 后端的练习。

标签: iscroll.js

相关文章

作弊技术2——网站劫持(网站劫持软件)

很多站长朋友都知道网站劫持,但是还是有人不知道什么是网站劫持,网站劫持是什么,下面就由小编介绍一下网站劫持的基本内容。一、什么是网站劫持网站劫持就是指在打开一个网址的时候,出现了一个不属于网站范围的广...

"前端开发者不可错过的技能:SSE流式传输助力实时数据更新!"

背景由于大模型通常是需要实时推理的,Web 应用调用大模型时,它的标准模式是浏览器提交数据,服务端完成推理,然后将结果以 JSON 数据格式通过标准的 HTTP 协议返回给前端。但是这么做有一个问题,...

通过元素属性精准定位 input 元素实现文件上传的完整指南

引言在 Web 自动化测试中,文件上传是一个常见但常令人头疼的功能点。特别是当页面结构复杂,元素属性不明确时,如何精准定位文件上传的 input 元素成为关键挑战。本文将通过一个实际案例,详细介绍如何...

浅谈移动设备交互体验之惯性滚动(惯性移动有做功吗?)

很久以前,手机上的交互依赖键盘和触控笔。我们要查看一个很长很长的列表,必须使用非常难用的触控笔或键盘的上下左右键。后来黑莓发明了滚动球,缓解了大拇指按出茧的问题。2007年,苹果推出iPhone。iP...

touch-action踩坑(touch&go)

使用css touch-action的原因在其官方的说明中:是否,以及以何种方式,给定的区域,可以由用户通过触摸屏操作(例如,通过平移或缩放内置的浏览器功能)但我最初并不是因为这个来使用它的,后续会补...

用js实现web端录屏(js录制视频)

随着互联网技术飞速发展,网页录屏技术已趋于成熟。例如可将录屏技术运用到在线考试中,实现远程监考、屏幕共享以及录屏等;而在我们开发人员研发过程中,对于部分偶发事件,异常监控系统仅仅只能告知程序出错,而不...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。