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

boyanx5个月前技术教程27

项目背景

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

在刷了半小时 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

相关文章

轻量级 React.js 虚拟美化滚动条组件RScroll

前几天有给大家分享一个Vue自定义滚动条组件VScroll。今天再分享一个最新开发的React PC端模拟滚动条组件RScroll。vue+pc桌面端模拟滚动条组件VScrollrscroll 一款基...

第3章 Vue.js快速精要(vue.js实战)

3.1 组合式API与选项式API对比实践架构差异对比uni-app开发建议// 选项式API适合简单页面 export default { data() { return { count...

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

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

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

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

JavaScript基础知识避坑指南:28个实用技巧让你代码跑得更快

最近我一直在学前端开发,发现JavaScript的基础知识特别重要。从判断数据类型到处理数组、函数,很多小技巧能解决大问题。今天整理了28个实战中常用的代码方法,都是在项目里踩过坑后总结的。比如判断对...

JavaScript 强制回流问题及优化方案

JavaScript 代码在运行过程中可能会强制触发浏览器的回流(Reflow),导致主线程被阻塞。回流(Reflow) 是浏览器重新计算页面元素布局的过程(如位置、大小等),属于高开销操作。频繁或同...

发表评论    

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