大屏可视化项目实践

简介: 大屏可视化项目实践

大屏可视化项目实践


1 如何适配屏幕

1.1 算法

网络异常,图片无法展示
|

  • Wp 为页面有效宽度,Hp 为页面有效高度
  • 页面左右居中,上下居中,四周留白即可
  • 然后在 head 里用 JS 设置 1rem = Wp / 100
// 设备宽度
const clientWidth = document.documentElement.clientWidth
// 设备高度
const clientHeight = document.documentElement.clientHeight
// 页面宽度
const.pageWidth = clientWidth / clientHeight > 16 / 9
    ? clientHeight * (16 / 9)
    : clientWidth
// 页面高度
const pageHeight = pageWidth / (16 / 9)
// 让一个rem是有效宽度的1%

1.2 使用 rem

获取设备宽高,并得到页面宽高。

const clientWidth = document.documentElement.clientWidth // 得到设备宽度
const clientHeight = document.documentElement.clientHeight // 得到设备高度
const pageWidth = clientWidth / clientHeight > 16 / 9 ? clientHeight * (16 / 9) : clientHeight; // 定义页面宽度
const pageHeight = pageWidth / (16 / 9) // 定义页面高度
复制代码

设置 1rem = Wp / 100。

const string = `<style>html{font-size: ${pageWidth/100}px}</style>`
document.write(string)

用 rem 表达页面宽度。

网络异常,图片无法展示
|

假设某div在设计稿中长100px,设计稿整体宽度2420px。那么该div在页面中长为100 / 1920 * 100rem

1.3使用 px() 函数

按照上方公式,新建一个px.ts文件,声明全局函数px()并导出。

export const px = (n) => n / 2420 * (window as any).pageWidth;

2 使用echart

2.1 引入

import * as echarts from "echarts";

2.2 写方法

举例:

useEffect(() => {
    var myChart = echarts.init(divRef.current);
    myChart.setOption(createEchartOptions({
        color: ['#8D70F8', '#33A4FA'],
        xAxis: {show: false},
        yAxis: {show: false},
        legend: {show: false},
        series: [
            {
                name: '访问来源',
                type: 'pie',
                radius: ['75%', '90%'],
                avoidLabelOverlap: false,
                label: {
                    show: true, position: 'inside', textStyle: {color: 'white', fontSize: px(20)},
                    formatter(options) {
                        return options.value * 100 + '%';
                    }
                },
                labelLine: {show: false},
                itemStyle: {
                    borderColor: '#0F113A',
                    borderWidth: px(4)
                },
                data: [
                    {value: 0.2, name: '女'},
                    {value: 0.8, name: '男'},
                ]
            }
        ]
    }));
}, []);

3 使用 grid 布局

Grid 布局即网格布局,是一种新的 CSS 布局模型,比较擅长将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系。

通过上面的例子Grid 布局相关的属性以及值众多,需要记忆的不少,建议可以跟 demo 一起结合起来,边敲代码边理解,再利用一些空闲时间记忆一下。

使用grid布局将页面分成几块。

网络异常,图片无法展示
|

<main>
    <section className="section1"></section>
    <section className="section2"></section>
    <section className="section3"></section>
    <section className="section4"></section>
    <section className="section5"></section>
</main>
>main {
 display: grid;
    grid-template:
      "box1 box2 box4 box5" 755fr
      "box3 box3 box4 box5" 363fr / 366fr 361fr 811fr 747fr;
    grid-column-gap: px(28);//行空隙
    grid-row-gap: px(28);//列空隙
    >.section1 {
      grid-area: box1;
      background: pink;
    }
    >.section2 {
      grid-area: box2;
      background: lightgrey;
    }
    >.section3 {
      grid-area: box3;
      background: lightblue;
    }
    >.section4 {
      grid-area: box4;
      background: lightcyan;
    }
    >.section5 {
      grid-area: box5;
      background: lightyellow;
    }
  }


相关文章
|
机器学习/深度学习 异构计算 AI芯片
云端开炉,线上训练,Bert-vits2-v2.2云端线上训练和推理实践(基于GoogleColab)
对于笔者这样的穷哥们来讲,GoogleColab就是黑暗中的一道光,就算有训练时长限制,也能凑合用了,要啥自行车?要饭咱也就别嫌饭馊了,本次我们基于GoogleColab在云端训练和推理Bert-vits2-v2.2项目,复刻那黑破坏神角色莉莉丝(lilith)。
云端开炉,线上训练,Bert-vits2-v2.2云端线上训练和推理实践(基于GoogleColab)
Idea单步调试快速跳过后面的断点-Mute Breakpoints 快速清空所有的断点
https://zhengyz.blog.csdn.net/article/details/128072266?spm=1001.2014.3001.5502
Idea单步调试快速跳过后面的断点-Mute Breakpoints 快速清空所有的断点
|
10月前
|
SQL 数据库
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
|
监控 Linux
在Linux中,如何进行系统性能瓶颈分析?
在Linux中,如何进行系统性能瓶颈分析?
|
设计模式 数据库 C#
外观模式(Facade Pattern)
外观模式(Facade Pattern)是一种结构型设计模式,为子系统中的一组接口提供一个一致的接口。它通过一个高层接口简化子系统的复杂性,使客户端更容易使用。外观模式的核心角色包括外观(Facade)和子系统(Subsystems),主要优点是降低复杂性和松耦合,适用于简化接口、分层设计和遗留代码集成等场景。
多进程同步之文件锁
【10月更文挑战第16天】文件锁是一种常用的多进程同步机制,它可以用于确保多个进程在访问共享资源时的互斥性。在使用文件锁时,需要注意锁的粒度、释放、竞争和性能等问题。通过合理使用文件锁,可以提高多进程程序的正确性和性能
|
网络协议 Windows
【常用命令】netstat -ano命令图文详细说明
【常用命令】netstat -ano命令图文详细说明
1252 0
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
254 0
|
安全 数据安全/隐私保护
使用了代理IP之后软件或网站还是拒绝访问的原因分析
代理IP使用后仍被拒访可能因无效IP、网站反代理机制、设置错误、网络问题或软件设置不当。检查代理有效性,确认网站限制,修正设置,确保网络稳定,及调整软件代理配置是解决之道。遇到问题需针对性排查。
|
运维 负载均衡 关系型数据库
【运维知识进阶篇】Ansible实现一套完整LNMP架构
【运维知识进阶篇】Ansible实现一套完整LNMP架构
503 0