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

boyanx6天前技术教程3

项目背景

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

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

相关文章

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

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

用JavaScript开发移动原生应用,Facebook正式开源React Native!

在经过前一天Messenger应用平台、Parse物联网开发者工具等惊喜的轰炸,Facebook于今天凌晨在F8开发者大会上正式开源了React Native。不过目前,只有iOS版,Android版...

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

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

小巧 Vue 页面滚动进度条组件ScrollProgress

今天给大家分享一个轻量级Vue.js全屏滚动进度条组件VueScrollProgress。vue-scroll-progress 一款基于vue.js构建的页面滚动进度条组件,非常小巧,GZIP压缩后...

利用 Fluid 自制 Mac 版 Overcast 应用

我喜爱收听播客,健身、上/下班途中,工作中,甚至是忙着做家务时。大多数情况下我会用 Marco Arment开发的Overcast(Freemium)在 iPhone 上收听,这是我目前最喜爱的 Po...

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

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

发表评论    

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