2023-01-04 Echarts学习笔记(三) Echarts的实际应用场景:在网页中插入Echarts的折线图,饼图和柱状图

news2024/9/28 9:25:43

文章目录

      • 零.准备和说明
        • 1.最终页面效果
        • 2.资源地址
      • 一.网页布局
        • 1.网页结构分析
        • 2.其他准备
        • 3.完整代码
          • index.html
          • css/index.scss
        • 4.效果
        • 5.知识点(待补充)
          • content
          • zoom
          • z-index
          • &::after
          • @keyframe
      • 二.插入Echarts图表

零.准备和说明

1.最终页面效果

在这里插入图片描述
主要分为两个部分,一是先进行常规页面布局,然后给图中的Echarts图表预留位置,即做成公共样式,二是在预留位置插入Echarts图表即可

2.资源地址

项目素材:https://gitee.com/xiaoqiang001/eckarts_open_class.git
视频地址:https://www.bilibili.com/video/BV1v7411R7mp

一.网页布局

1.网页结构分析

这个网页分为头部部分(header)和页面主体部分(mainbox),
其中,头部部分右边的时间是通过伪元素选择器::after设置一个定位属性放在右侧

页面主体分为左边盒子,中间盒子和右边盒子(三个column)
其中,左边盒子和右边盒子的可以共用样式,最后分别插入三个不同的图表即可

中间盒子又可以分为上面的数据部分(no)和下面的地图部分(map)

数据部分又可以分为上侧的数字部分(no-hd),数字的文字样式这里引入了iconfont的文字格式,以及下侧的文字部分(no-bd)

地图部分要求引入动画效果,即通过背景图片的旋转来完成动画效果,最后给后续要插入的地图预留位置

2.其他准备

  • 需要先引入相关图片放进images文件夹,引入字体样式放进font文件夹
  • 引入flexible.js,把屏幕分为 24 等份
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
  • 在vsCode应用商店下载cssrem插件,可以在设置px值的过程中自动转换成rem值,然后在设置中搜索cssrem,把其root的font-size从16px改成80px
  • 四个角的样式是通过一个个宽高10px小盒子只显示两个边框实现的,详见
    https://blog.csdn.net/rowlet/article/details/123317033

3.完整代码

index.html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/index.css">
</head>

<body>
    <!-- 头部 -->
    <header>
        <h1>可视化展板Echarts</h1>
        <div class="showTime"></div>
    </header>
    <!-- 页面主体部分 -->
    <section class="mainbox">
        <!-- 页面主体:左边部分 -->
        <div class="column">
            <!-- 公共样式面板panel:复制若干份panel -->
            <!-- 重命名为bar:柱状图 -->
            <div class="panel bar ">
                <h2>柱形图-就业行业</h2>
                <div class="chart">图表</div>
                <div class="panel-footer"></div>
            </div>
            <!-- 重命名为line:折线图 -->
            <div class="panel line">
                <h2>柱形图-就业行业</h2>
                <div class="chart">图表</div>
                <div class="panel-footer"></div>
            </div>
            <!-- 重命名为pie:饼状图 -->
            <div class="panel">
                <h2>柱形图-就业行业</h2>
                <div class="chart">图表</div>
                <div class="panel-footer"></div>
            </div>
        </div>
        <!-- 页面主体:中间部分(记得设置margin值) -->
        <div class="column">
            <!-- 上面的数字部分 -->
            <div class="no">
                <!-- 数字模块 -->
                <div class="no-hd">
                    <ul>
                        <li>125811</li>
                        <li>101363</li>
                    </ul>
                </div>
                <!-- 文字模块 -->
                <div class="no-bd">
                    <ul>
                        <li>前端需求人数</li>
                        <li>市场供应人数</li>
                    </ul>
                </div>
            </div>
            <!-- 下面的地图部分 -->
            <div class="map">
                <div class="map1"></div>
                <div class="map2"></div>
                <div class="map3"></div>
                <div class="chart"></div>
            </div>
        </div>
        <!-- 页面主体:右边部分 -->

        <div class="column">
            <!-- 公共样式面板panel:复制若干份panel -->
            <!-- 重命名为bar:柱状图 -->
            <div class="panel bar ">
                <h2>柱形图-就业行业</h2>
                <div class="chart">图表</div>
                <div class="panel-footer"></div>
            </div>
            <!-- 重命名为line:折线图 -->
            <div class="panel line">
                <h2>柱形图-就业行业</h2>
                <div class="chart">图表</div>
                <div class="panel-footer"></div>
            </div>
            <!-- 重命名为pie:饼状图 -->
            <div class="panel">
                <h2>柱形图-就业行业</h2>
                <div class="chart">图表</div>
                <div class="panel-footer"></div>
            </div>
        </div>
    </section>
    <footer>

    </footer>
    <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>

</body>
<script>
    // header
    // 时间模块
    var t = null;
    t = setTimeout(timer, 1000);

    function timer() {
        clearTimeout(t);
        dt = new Date();
        var y = dt.getFullYear(),
            mt = dt.getMonth() + 1,
            day = dt.getDate(),
            h = dt.getHours(),
            m = dt.getMinutes(),
            s = dt.getSeconds();;
        var showTime = document.querySelector(".showTime");
        showTime.innerHTML = `当前时间:${y}${mt}${day}${h}${m}${s}`
    }
</script>

</html>
css/index.scss
// 0.格式化初始样式
* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

html {
    height: 100%;
}

body {
    height: 100%;
}

body {
    background: url(../images/bg.jpg) no-repeat top center;
}


/* 声明字体*/

@font-face {
    font-family: electronicFont;
    src: url(../font/DS-DIGIT.TTF);
}

// 1.头部
header {
    position: relative;
    height: 100px;
    background: url(../images/head_bg.png);
    background-size: 100% 100%;
    h1 {
        color: #fff;
        font-size: 38px;
        line-height: 80px;
        text-align: center;
    }
    .showTime {
        position: absolute;
        top: 0;
        right: .375rem;
        line-height: .9375rem;
        color: rgba(255, 255, 255, .7);
        font-size: .25rem;
    }
}

// 2.页面主体
.mainbox {
    min-width: 1024px;
    max-width: 1920px;
    margin: 0 auto;
    padding: .125rem .125rem 0 .125rem;
    display: flex;
    .column {
        flex: 3;
        &:nth-child(2) {
            flex: 5;
            margin: 0 .125rem .1875rem;
        }
    }
}

// 公共样式panel
.panel {
    position: relative;
    height: 3.875rem;
    border: 1px solid rgba(25, 186, 136, .17);
    background-image: url("../images/line\(1\).png");
    padding: 0 .0625rem .5rem .0625rem;
    &::before {
        position: absolute;
        top: 0;
        left: 0;
        width: 10px;
        height: 10px;
        border-left: 2px solid #02a6b5;
        border-top: 2px solid #02a6b5;
        content: "1";
    }
    &::after {
        position: absolute;
        top: 0;
        right: 0;
        width: 10px;
        height: 10px;
        border-right: 2px solid #02a6b5;
        border-top: 2px solid #02a6b5;
        content: "1";
    }
    .panel-footer {
        position: absolute;
        bottom: 0;
        left: 0;
        width: 100%;
        &::before {
            position: absolute;
            bottom: 0;
            left: 0;
            width: 10px;
            height: 10px;
            border-left: 2px solid #02a6b5;
            border-bottom: 2px solid #02a6b5;
            content: "1";
        }
        &::after {
            position: absolute;
            bottom: 0;
            right: 0;
            width: 10px;
            height: 10px;
            border-right: 2px solid #02a6b5;
            border-bottom: 2px solid #02a6b5;
            content: "1";
        }
    }
    h2 {
        height: .6rem;
        color: #ffffff;
        font-size: .25rem;
        font-weight: 400;
        text-align: center;
    }
    .chart {
        height: 3rem;
        background: pink;
    }
}

// 设置中间的column的样式
// 1.设置上面no的样式:上边放数字(no-hd),下边放文字(no-bd)
.no {
    background: rgba(101, 132, 226, 0.1);
    padding: .1875rem;
    // 数字模块
    .no-hd {
        border: 1px solid rgba(25, 186, 139, 0.17);
        position: relative;
        &::before {
            position: absolute;
            top: 0;
            left: 0;
            width: 30px;
            height: 10px;
            border-left: 2px solid #02a6b5;
            border-top: 2px solid #02a6b5;
            content: "";
        }
        &::after {
            position: absolute;
            bottom: 0;
            right: 0;
            width: 30px;
            height: 10px;
            border-right: 2px solid #02a6b5;
            border-bottom: 2px solid #02a6b5;
            content: "";
        }
        ul {
            display: flex;
            li {
                position: relative;
                height: 1rem;
                font-size: .875rem;
                color: #ffeb7b;
                font-family: electronicFont;
                flex: 1;
                text-align: center;
                &:nth-child(1)::after {
                    position: absolute;
                    height: 50%;
                    border: 1px solid rgba(255, 255, 255, 0.2);
                    top: 25%;
                    right: 0;
                    content: "";
                }
            }
        }
    }
    // 文字模块
    .no-bd {
        ul {
            display: flex;
            li {
                flex: 1;
                height: .5rem;
                font-size: .225rem;
                padding-top: .125rem;
                color: rgba(255, 255, 255, 0.7);
                text-align: center;
            }
        }
    }
}

// 2.设置下面map的样式:套三层背景,做旋转动画
.map {
    height: 10.125rem;
    position: relative;
    .map1 {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 6.475rem;
        height: 6.475rem;
        background: url(../images/map.png) no-repeat;
        background-size: 100% 100%;
        opacity: .3;
    }
    .map2 {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 8.0375rem;
        height: 8.0375rem;
        background-image: url(../images/lbx.png);
        background-size: 100% 100%;
        opacity: .6;
        animation: rotate 15s linear infinite;
        z-index: 2;
    }
    .map3 {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 7.075rem;
        height: 7.075rem;
        background-image: url(../images/jt.png);
        background-size: 100% 100%;
        animation: rotate1 10s linear infinite;
    }
    .chart {
        position: absolute;
        width: 100%;
        height: 10.125rem;
        top: 0;
        left: 0;
        z-index: 5;
    }
}

// 动画效果写在这里
@keyframes rotate {
    from {
        transform: translate(-50%, -50%) rotate(0deg);
    }
    to {
        transform: translate(-50%, -50%) rotate(360deg);
    }
}

@keyframes rotate1 {
    from {
        transform: translate(-50%, -50%) rotate(0deg);
    }
    to {
        transform: translate(-50%, -50%) rotate(-360deg);
    }
}

4.效果

在这里插入图片描述

5.知识点(待补充)

content
zoom
z-index
&::after
@keyframe

二.插入Echarts图表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BeautifulSoup深入学习

BeautifulSoup深入学习 简介 BeautifulSoup是python的一个库&#xff0c;其提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱&#xff0c;通过解析文档为用户提供需要抓取的数据&#xff0c;因为简单&#xff0c;所以不需要多少代码就可…

使用Hog特征进行字母和数字的分类

目的&#xff1a;使用字母数字的二值图像&#xff0c;进行识别&#xff1a; 整体思路&#xff1a; 1&#xff09;对图像进行预处理&#xff1b; 对收集的单个字符进行二值化&#xff0c;进行数据均衡&#xff0c;并且将所有的字符图片直接resize为20*20&#xff08;有过进行…

Docker镜像如何上传阿里云

目录 1.前期准备 2.push(推)镜像 3.pull(拉)镜像 1.前期准备 1.注册阿里云账户 阿里云官方网站链接&#xff1a;https://dev.aliyun.com 2.登陆账户 3.配置Docker加速器 注&#xff1a;搜索“容器镜像服务” 4.创建镜像仓库的命名空间 例如&#xff1a;xnx 5.创建镜像仓库(创…

77、【字符串】leetcode ——151. 反转字符串中的单词(C++版本)

题目描述 原题链接&#xff1a;151. 反转字符串中的单词 解题思路 先预处理头部空格和中间多余空格&#xff1b;再将整体进行逆转。例如&#xff1a;the sky is blue —> eulb si yks eht&#xff1b;最后&#xff0c;分别对每个单词进行逆转&#xff0c;即可完成反转字符…

生产制造业订单管理软件如何做好订单变更管理?

生产制造企业&#xff0c;由于客户需求具有多样性和不确定性&#xff0c;客户订单的内容便会存在出现各种变更的可能&#xff0c;如数量、交期、更改具体参数等&#xff0c;提出变更订单&#xff0c;是很常见的现象。生产制造企业常见的订单变更需求1、PMC已经下完制令后&#…

户外运动耳机怎么选、五款最适合户外运动的耳机分享

对于运动爱好者来说&#xff0c;很多人都比较喜欢边听音乐边运动&#xff0c;音乐能够让运动起来更有激情&#xff0c;提升运动锻炼效果。那么到底什么耳机更适合户外运动呢&#xff1f;目前运动耳机在市面上有很多&#xff0c;但不是每一款都适合户外运动&#xff0c;自己找的…

7.Express模块基础用法

Express是做web服务器的&#xff0c;是一个第三方的包&#xff0c;官网 Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网 Express的部分用法与http模块类似 在我看来Express是一个轻量级的框架&#xff0c;如果用于做一些较复杂的业务会…

亚马逊、阿里国际、Shopee、Temu等跨境电商平台测评自养号经验分享

对于亚马逊、temu、阿里国际等平台商家来说&#xff0c;流量非常重要。商家需要想办法提高流量。卖家店铺没有流量怎么办&#xff1f; 获取流量的第一点:自然搜索 自然搜索流量的来源实际上是通过站点的优化来提高排名的效果。站点优化有很多维度&#xff0c;如选择合适的关键…

嵌入式工程师招聘要求有哪些?

现在有非常多的朋友会问嵌入式软件工程师在实际的招聘中都是什么样的标准与要求呢&#xff0c;对于这个问题空口无凭&#xff0c;我今天从招聘网站上找了一些典型的招聘案例。 一、嵌入式软件工程师 职位描述&#xff1a; 1、对需求进行分析评审&#xff0c;并输出开发计划&a…

基于Vue和SpringBoot的进销存管理系统的设计和实现

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

【阶段二】Python数据分析Pandas工具使用08篇:探索性数据分析:数据的描述:数据的分散趋势与数据的分布形态

本篇的思维导图: 数据的分散趋势 数据的分散趋势是用来刻画数值型变量偏离中心的程度,最为常用的分散趋势指标有标准差、极差、四分位差等。通过这些指标可以反映样本之间的差异大小,如果指标值越大,说明样本之间差异越明显,反之差异越小。 方差与标准差 …

阿里云产品专家陶炳哲:Java应用最佳实验

2022 年 9 月 28 日&#xff0c;阿里云用户组&#xff08;AUG&#xff09;第 11 期活动在深圳举办。活动现场&#xff0c;阿里云产品专家陶炳哲向参会企业分享了《Java 应用最佳实验》。本文根据演讲内容整理而成。 大家好&#xff0c;我是陶炳哲&#xff0c;是阿里云产品专家。…

React(coderwhy)- 02(函数组件)

React的组件化开发 组件化是一种分而治之的思想&#xff1a; 如果我们将一个页面中所有的处理逻辑全部放在一起&#xff0c;处理起来就会变得非常复杂&#xff0c;而且不利于后续的管理以及扩展。 但如果&#xff0c;我们讲一个页面拆分成一个个小的功能块&#xff0c;每个功能…

191:vue+openlayers 选择feature,固定按钮删除selected feature

第191个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中使用select来选择feature元素,通过按键来删除selected的feature。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共95行)相关API参考专栏目标…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的ROS(Robot Operating System)算法模型

给我推荐20个比较流行的ros算法模型 很好&#xff0c;下面是20个比较流行的ROS(Robot Operating System)算法模型&#xff1a; 便携式机器人操作系统(PR2) 全向轮操作系统(TurtleBot) 机器人操作系统(ROS)用于机器人操作 基于空间相对导航的机器人操作系统(SLAM) 自适应机器人…

全网惟一面向软件测试人员的Python基础教程-在Python中如何对列表进行增删改排序?

全网惟一面向软件测试人员的Python基础教程 起点&#xff1a;《python软件测试实战宝典》介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你知道Python代码是怎样运行的吗&#xff1f; 第四章 Python数据类型中有那些故事呢&#xff1f;…

IB成绩可以申请英国大学吗?

我们都知道ALEVEL课程是英国正统的高中课程&#xff0c;几乎被所有英国学校作为大学招收新生的入学课程。 那么&#xff0c;IB课程作为与ALEVEL课程一样享受极高国际知名度的课程&#xff0c;是否也能够申请英国大学呢&#xff1f;可以确定的告诉大家&#xff0c;用IB课程申请英…

高压放大器的组成部分有哪些(功率放大器的性能好坏)

虽然很多电子工程师经常使用高压放大器&#xff0c;但是对于高压功率放大器的组成和使用都不太清楚&#xff0c;下面来介绍一下高压放大器的组成部分以及如何验证功率放大器的性能好坏。 一、高压放大器的介绍 高压放大器是一种理想的功率放大器&#xff0c;可以放大交流和直流…

[C语言]和我一起来认识“整型在内存中的存储”

目录 1.整型类型中的成员 2.整型在内存中的存储 2.1原码&#xff0c;反码&#xff0c;补码 2.2整型在内存中以补码存放数据 2.3大小端 2.3.1大小端的介绍 2.3.2通过编程判别当前机器的字节序 1.整型类型中的成员 (unsigned为无符号类型&#xff0c;signed为有符号类型) 1.c…

【java集合】HashMap源码解析(基于JDK1.8)

一、Hashmap简介 类继承关系图如下&#xff1a; HashMap实现了三个接口&#xff0c;一个抽象类。主要的方法都在Map接口中&#xff0c;AbstractMap抽象类实现了Map方法中的公共方法&#xff0c;例如&#xff1a;size(),containsKey(),clear()等,主要方法由子类自己实现。 Ha…