当前位置:首页 > VUE

Vue实现分割监控页面

2026-02-21 05:11:15VUE

Vue实现分割监控页面

使用Vue Grid Layout库

Vue Grid Layout是一个基于Gridster的响应式拖拽网格布局库,适合构建监控面板。安装依赖:

npm install vue-grid-layout --save

示例代码实现可拖拽分割布局:

<template>
  <div>
    <grid-layout
      :layout.sync="layout"
      :col-num="12"
      :row-height="30"
      :is-draggable="true"
      :is-resizable="true"
    >
      <grid-item
        v-for="item in layout"
        :x="item.x"
        :y="item.y"
        :w="item.w"
        :h="item.h"
        :i="item.i"
        :key="item.i"
      >
        <component :is="item.component" />
      </grid-item>
    </grid-layout>
  </div>
</template>

<script>
import VueGridLayout from 'vue-grid-layout'
import CPUChart from './components/CPUChart.vue'
import MemoryChart from './components/MemoryChart.vue'

export default {
  components: {
    GridLayout: VueGridLayout.GridLayout,
    GridItem: VueGridLayout.GridItem,
    CPUChart,
    MemoryChart
  },
  data() {
    return {
      layout: [
        { x:0, y:0, w:6, h:8, i:'0', component: 'CPUChart' },
        { x:6, y:0, w:6, h:8, i:'1', component: 'MemoryChart' }
      ]
    }
  }
}
</script>

使用CSS Grid布局

纯CSS方案实现基础分割布局:

Vue实现分割监控页面

<template>
  <div class="monitor-container">
    <div class="panel cpu-panel"><CPUChart /></div>
    <div class="panel memory-panel"><MemoryChart /></div>
    <div class="panel network-panel"><NetworkChart /></div>
  </div>
</template>

<style scoped>
.monitor-container {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-template-rows: 300px 300px;
  gap: 16px;
}

.cpu-panel {
  grid-column: 1;
  grid-row: 1 / span 2;
}

.memory-panel {
  grid-column: 2;
  grid-row: 1;
}

.network-panel {
  grid-column: 2;
  grid-row: 2;
}
</style>

动态调整布局方案

通过Vue响应式数据实现布局切换:

<script>
export default {
  data() {
    return {
      layoutMode: 'horizontal', // 可选: horizontal/vertical/grid
      panels: [
        { id: 'cpu', visible: true },
        { id: 'memory', visible: true },
        { id: 'network', visible: false }
      ]
    }
  },
  computed: {
    containerClass() {
      return {
        'horizontal-split': this.layoutMode === 'horizontal',
        'vertical-split': this.layoutMode === 'vertical',
        'grid-split': this.layoutMode === 'grid'
      }
    }
  },
  methods: {
    togglePanel(panelId) {
      const panel = this.panels.find(p => p.id === panelId)
      panel.visible = !panel.visible
    }
  }
}
</script>

集成Split.js库

实现可拖动调整大小的分割面板:

Vue实现分割监控页面

npm install split.js

组件实现:

<template>
  <div ref="splitContainer" class="split-container">
    <div class="split-panel"><CPUChart /></div>
    <div class="split-panel"><MemoryChart /></div>
  </div>
</template>

<script>
import Split from 'split.js'

export default {
  mounted() {
    Split([this.$refs.splitContainer], {
      sizes: [50, 50],
      minSize: 200,
      gutterSize: 8
    })
  }
}
</script>

<style>
.split-container {
  display: flex;
  height: 100vh;
}

.gutter {
  background-color: #eee;
  background-repeat: no-repeat;
  background-position: 50%;
}
</style>

响应式布局处理

添加窗口尺寸监听实现自适应:

<script>
export default {
  data() {
    return {
      windowWidth: window.innerWidth
    }
  },
  created() {
    window.addEventListener('resize', this.handleResize)
  },
  destroyed() {
    window.removeEventListener('resize', this.handleResize)
  },
  methods: {
    handleResize() {
      this.windowWidth = window.innerWidth
      this.adjustLayout()
    },
    adjustLayout() {
      if (this.windowWidth < 768) {
        this.layoutMode = 'vertical'
      } else {
        this.layoutMode = 'horizontal'
      }
    }
  }
}
</script>

标签: 页面Vue
分享给朋友:

相关文章

vue实现页面

vue实现页面

Vue 实现页面的基本方法 创建 Vue 项目 使用 Vue CLI 快速初始化项目,运行以下命令安装并创建项目: npm install -g @vue/cli vue create my-pro…

Vue数据依赖实现

Vue数据依赖实现

Vue数据依赖实现原理 Vue的数据依赖实现基于响应式系统,核心是通过Object.defineProperty或Proxy拦截数据读写操作,结合发布-订阅模式自动追踪依赖和触发更新。 核心机制 依…

Vue实现多站点

Vue实现多站点

Vue实现多站点的方案 Vue.js可以通过多种方式实现多站点架构,具体方案取决于项目需求和规模。以下是常见的几种实现方法: 基于动态路由的SPA方案 适用于中小型多站点项目,所有站点共享同一个Vu…

vue 实现页面跳转

vue 实现页面跳转

vue 实现页面跳转的方法 在 Vue 中实现页面跳转主要通过路由(Vue Router)完成,以下是几种常见的方式: 声明式导航(模板中使用 <router-link>) 在模板中直接…

php怎样实现页面跳转页面跳转页面

php怎样实现页面跳转页面跳转页面

PHP页面跳转的实现方法 在PHP中实现页面跳转有多种方式,以下是常见的几种方法: header函数跳转 header("Location: target_page.php"); exit();…

vue实现页面下钻

vue实现页面下钻

Vue 实现页面下钻的方法 使用 Vue Router 进行路由跳转 在 Vue 项目中,可以通过 Vue Router 实现页面下钻。定义路由时,为下钻页面配置动态路由参数。 // router/…