最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VUE3項(xiàng)目使用DavaV、ECharts實(shí)現(xiàn)數(shù)據(jù)大屏

 更新時(shí)間:2026年04月10日 10:17:52   作者:用戶9381691255360  
在大屏數(shù)據(jù)可視化的設(shè)計(jì)中,Vue.js的應(yīng)用越來(lái)越受到關(guān)注,無(wú)論是企業(yè)數(shù)據(jù)看板還是實(shí)時(shí)監(jiān)控系統(tǒng),這篇文章主要介紹了VUE3項(xiàng)目使用DavaV、ECharts實(shí)現(xiàn)數(shù)據(jù)大屏的相關(guān)資料,需要的朋友可以參考下

一、概述

現(xiàn)代社會(huì)中,在越來(lái)越多的場(chǎng)景中會(huì)應(yīng)用到數(shù)據(jù)大屏(即數(shù)據(jù)可視化)。本文講述了在VUE3項(xiàng)目中,搭建數(shù)據(jù)大屏的全過(guò)程。使用的組件庫(kù)有:DavaV、ECharts。

構(gòu)建大屏的過(guò)程:

  1. 設(shè)計(jì)好頁(yè)面布局
  2. 控制數(shù)據(jù)大屏的自適應(yīng)
  3. 添加組件

二、設(shè)計(jì)頁(yè)面布局

數(shù)據(jù)大屏頁(yè)面布局很清晰,能很清楚的看出分了幾個(gè)區(qū)域?,F(xiàn)在以下面的大屏圖為示例,說(shuō)一下如何布局。

頁(yè)面布局格式如下圖:

  • 整個(gè)數(shù)據(jù)大屏分為兩行。第一行是標(biāo)題行,第二行展示圖表數(shù)據(jù)。
  • 第一行被等分為三塊,中間展示標(biāo)題,并居中。
  • 第二行被分為三大列,從左到右寬度比例為3:4:3。
  • 第二行第一列(最左列)內(nèi)容垂直等分了三塊,即圖表1、圖表2、圖表3。他們的高度比例是:1:1:1。
  • 第二行第二列(中間列)內(nèi)容垂直分了兩塊,即主圖表、圖表4,他們的高度比例是:2:1。
  • 第二行第三列(最右列)內(nèi)容垂直分了兩塊,即圖表5、圖表6,他們的高度比例是:2:1。

在.vue文件中,布局代碼如下:

<template>
  <div class="container">
    <!-- 數(shù)據(jù)大屏展示內(nèi)容區(qū)域 -->
    <div class="screen" ref="screen">
      <!-- 第一行:展示標(biāo)題 -->
      <div class="title">
        <div class="title-divide title-left">標(biāo)題左側(cè)</div>
        <div class="title-divide title-center">標(biāo)題</div>
        <div class="title-divide title-right">標(biāo)題右側(cè)</div>
      </div>
      <!-- 第二行:展示圖表數(shù)據(jù) -->
      <div class="body">
        <!-- 該行的最外層分了三列,寬度比例是:3:4:3。 -->
        <!-- 一行三列 -->
        <div class="body-left">
          <!-- 在body-left塊中垂直方向上均等分了三小塊 -->
          <div class="body-left-top">圖表1</div>
          <div class="body-left-middle">圖表2</div>
          <div class="body-left-bottom">圖表3</div>
        </div>
        <div class="body-center">
          <div class="body-center-top">主圖表</div>
          <div class="body-center-bottom">圖表4</div>
        </div>
        <div class="body-right">
          <div class="body-right-top">圖表5</div>
          <div class="body-right-bottom">圖表</div>
        </div>
      </div>
    </div>
  </div>
</template>
<script setup lang="ts" name="">
import { onMounted, ref } from 'vue';
// 獲取數(shù)據(jù)大屏展示內(nèi)容盒子的DOM元素
const screen = ref()
// 定義大屏縮放比例
function getScale(width = 1920, height = 1080) {
  const ww = window.innerWidth / width
  const wh = window.innerHeight / height
  return ww < wh ? ww : wh
}
// 動(dòng)態(tài)調(diào)整screen div的尺寸
function screenResize() {
  // scale:進(jìn)行縮放計(jì)算,基礎(chǔ)尺寸:1980w * 1080h。
  // translate:元素平移,正數(shù)表示沿軸的正向移動(dòng)。translate(-30%, -60%)以基點(diǎn)沿X軸反方向平移30%,沿Y軸反方向平移60%。
  screen.value.style.transform = `scale(${getScale()}) translate(-50%, -50%)`
}
onMounted(() => {
  screenResize()
})
// 監(jiān)聽視口尺寸的變化
window.onresize = () => {
  screenResize()
}
</script>
<style lang="scss" scoped>
// 最外層容器
.container {
  // 尺寸同視口一樣
  height: 100vh;
  width: 100vw;
  .screen {
    // 設(shè)置一個(gè)基礎(chǔ)的尺寸大小
    height: 1080px;
    width: 1920px;
    position: fixed;
    left: 50%;
    top: 50%;
    // 平移的基點(diǎn):左上角
    transform-origin: left top;
    .title {
      height: 5%;
      width: 100%;
      display: flex;
      // 父容器樣式已經(jīng)指定display是flex。在三個(gè)子容器中樣式指定flex: 1;,則會(huì)將父容器寬度進(jìn)行三等分。
      .title-divide {
        flex: 1; // 長(zhǎng)度等分
        height: 100%;
      }
      .title-left {
        background-color: pink;
      }
      .title-center {
        background-color: greenyellow;
      }
      .title-right {
        background-color: yellow;
      }
    }
    .body {
      height: 95%;
      width: 100%;
      display: flex;
      // 主軸方向:水平方向
      flex-direction: row;
      justify-content: space-between;
      // 父級(jí)容器樣式已經(jīng)設(shè)置display為flex
      .body-left {
        // 0: flex-grow放大比例。默認(rèn)為0,不放大。
        // 1:flex-shrink縮小比例。默認(rèn)為1。當(dāng)空間不足時(shí),所有子元素等比例縮小。
        // 30%:flex-basis在主軸方向上的基礎(chǔ)尺寸
        flex: 0 1 30%;
        display: flex;
        // 主軸方向:垂直方向
        flex-direction: column;
        // .body-left-top、.body-left-middle、.body-left-bottom三個(gè)樣式中都是flex:1。
        // 表示三個(gè)元素的方法比例都是1,即他們等分空間。
        .body-left-top {
          flex: 1;
          background-color: antiquewhite;
        }
        .body-left-middle {
          flex: 1;
          background-color: rgb(232, 250, 215);
        }
        .body-left-bottom {
          flex: 1;
          background-color: rgb(189, 193, 247);
        }
      }
      .body-center {
        flex: 0 1 40%;
        display: flex;
        // 主軸方向:垂直方向
        flex-direction: column;
        // .body-center-top、.body-center-bottom的樣式中flex不一樣。
        // 表示.body-center-top占據(jù)空間是.body-center-bottom的2倍。
        .body-center-top {
          flex: 2;
          background-color: rgb(242, 215, 250);
        }
        .body-center-bottom {
          flex: 1;
          background-color: rgb(215, 241, 250);
        }
      }
      .body-right {
        flex: 0 1 30%;
        display: flex;
        // 主軸方向:垂直方向
        flex-direction: column;
        // .body-right-top、.body-right-bottom的樣式中flex不一樣。
        // 表示.body-right-top占據(jù)空間是.body-right-bottom的2倍。
        .body-right-top {
          flex: 2;
          background-color: rgb(176, 177, 178);
        }
        .body-right-bottom {
          flex: 1;
          background-color: rgb(10, 141, 234);
        }
      }
    }
  }
}
</style>

代碼效果圖:

針對(duì)上述代碼的說(shuō)明:

  1. 頁(yè)面布局使用flex布局。
  2. 數(shù)據(jù)大屏實(shí)現(xiàn)了適配(自適應(yīng)),核心是使用scale設(shè)置縮放。

三、數(shù)據(jù)大屏的適配(自適應(yīng))

要想數(shù)據(jù)大屏實(shí)現(xiàn)適配,下面幾個(gè)地方是關(guān)鍵。

  1. 最外層容器container設(shè)置高度、寬度是當(dāng)前視口的高度和寬度。
  2. 第二層容器screen設(shè)置了一個(gè)基礎(chǔ)尺寸(1980 * 1080),大屏的縮放都是以這個(gè)尺寸為基礎(chǔ)進(jìn)行的。
  3. 第二層容器screen設(shè)置了一個(gè)固定位置(position: fixed),并設(shè)置了一個(gè)平移基點(diǎn)transform-origin。
  4. 第二層容器screen內(nèi)部的容器大小使用百分比設(shè)置。

四、添加組件

1、使用DataV

1.1 安裝DataV

pnpm install @kjgl77/datav-vue3

全局引入

// main.ts中全局引入 
import { createApp } from 'vue' 
import DataVVue3 from '@kjgl77/datav-vue3' 
const app = createApp(App) 
app.use(DataVVue3) 
app.mount('#app')

引入后在.vue文件中可以直接使用
<dv-decoration-1 :color="['pink','yellow']" style="width:200px;height:50px;" />

2、使用ECharts

2.1 安裝ECharts

pnpm install echarts --save
如果用到3D地球(globe)組件,還需要安裝echarts-gl pnpm install echarts-el- --save

2.2 使用 ECharts

//在vue文件中,這樣使用ECharts
<template>
  <div id="main" style="width: 600px;height:400px;"></div>
</template>
<script>
import * as echarts from 'echarts';
// 基于準(zhǔn)備好的dom,初始化echarts實(shí)例
var myChart = echarts.init(document.getElementById('main'));
// 繪制圖表
myChart.setOption({
  title: {
    text: 'ECharts 入門示例'
  },
  tooltip: {},
  xAxis: {
    data: ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
  },
  yAxis: {},
  series: [
    {
      name: '銷量',
      type: 'bar',
      data: [5, 20, 36, 10, 10, 20]
    }
  ]
});
</script>

總結(jié) 

到此這篇關(guān)于VUE3項(xiàng)目使用DavaV、ECharts實(shí)現(xiàn)數(shù)據(jù)大屏的文章就介紹到這了,更多相關(guān)VUE3數(shù)據(jù)大屏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • el-table表格排序(多列排序和遠(yuǎn)程排序)

    el-table表格排序(多列排序和遠(yuǎn)程排序)

    本文主要介紹了el-table表格排序(多列排序和遠(yuǎn)程排序),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 詳解vue 組件注冊(cè)

    詳解vue 組件注冊(cè)

    這篇文章主要介紹了vue 組件注冊(cè)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)vue 組件的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-11-11
  • vue.js中npm安裝教程圖解

    vue.js中npm安裝教程圖解

    這篇文章主要介紹了vue.js中npm安裝教程圖解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • axios前端訪問后端攜帶cookie的代碼實(shí)例

    axios前端訪問后端攜帶cookie的代碼實(shí)例

    當(dāng)用戶在網(wǎng)站登錄后,服務(wù)器會(huì)在其瀏覽器上設(shè)置一個(gè)包含登錄信息的Cookie,通過(guò)這個(gè)Cookie,服務(wù)器能夠識(shí)別用戶是否已登錄,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Vue-cli3中如何引入ECharts并實(shí)現(xiàn)自適應(yīng)

    Vue-cli3中如何引入ECharts并實(shí)現(xiàn)自適應(yīng)

    這篇文章主要介紹了Vue-cli3中如何引入ECharts并實(shí)現(xiàn)自適應(yīng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 從零寫vue日歷組件

    從零寫vue日歷組件

    最近做項(xiàng)目遇到一個(gè)需求,需要制作一個(gè)定制化的日歷組件,本文主要介紹了從零寫vue日歷組件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue中實(shí)現(xiàn)Word、Excel、PDF預(yù)覽的操作步驟

    Vue中實(shí)現(xiàn)Word、Excel、PDF預(yù)覽的操作步驟

    在開發(fā)Vue項(xiàng)目時(shí),經(jīng)常需要處理文檔的預(yù)覽和下載功能,尤其是對(duì)于PDF、PPT、Word和Excel這類文件格式,為了實(shí)現(xiàn)這一功能,開發(fā)者常常面臨處理不同文件格式和類型數(shù)據(jù)源的挑戰(zhàn),所以本文將詳細(xì)探討如何在Vue項(xiàng)目中預(yù)覽上述文檔格式,需要的朋友可以參考下
    2025-09-09
  • Vite項(xiàng)目中SVG雪碧圖的實(shí)現(xiàn)

    Vite項(xiàng)目中SVG雪碧圖的實(shí)現(xiàn)

    本文介紹了SVG雪碧圖在前端開發(fā)中的應(yīng)用,并提供了在Vite項(xiàng)目中使用vite-plugin-svg-icons插件的詳細(xì)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • vue使用CSS變量詳解

    vue使用CSS變量詳解

    文章講解了如何在Vue項(xiàng)目中使用CSS變量,包括動(dòng)態(tài)計(jì)算值和根據(jù)條件計(jì)算屬性,通過(guò)示例展示了如何使用CSS變量來(lái)實(shí)現(xiàn)動(dòng)畫效果和動(dòng)態(tài)樣式
    2025-12-12
  • Vue中的table表單切換實(shí)現(xiàn)效果

    Vue中的table表單切換實(shí)現(xiàn)效果

    這篇文章主要介紹了Vue中的table表單切換實(shí)現(xiàn)效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論

仙游县| 陕西省| 弋阳县| 阳曲县| 鄱阳县| 南川市| 彩票| 永胜县| 元阳县| 涟水县| 南涧| 肃宁县| 巩留县| 青冈县| 静宁县| 宝清县| 合山市| 黎川县| 兴化市| 泉州市| 花垣县| 宿松县| 法库县| 武威市| 黑山县| 行唐县| 青海省| 曲阜市| 许昌市| 饶河县| 库尔勒市| 桐城市| 晋宁县| 沂源县| 德惠市| 陆良县| 格尔木市| 临桂县| 乐业县| 永登县| 宜兰市|