当前位置:首页 > 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方案实现基础分割布局:

<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库

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

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>

响应式布局处理

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

Vue实现分割监控页面

<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
分享给朋友:

相关文章

h5实现页面跳转页面跳转页面

h5实现页面跳转页面跳转页面

H5 实现页面跳转的方法 使用 <a> 标签实现跳转 通过超链接标签 <a> 的 href 属性指定目标页面路径,用户点击后跳转。 <a href="target.…

Vue gitbook 实现

Vue gitbook 实现

Vue 与 GitBook 集成实现 将 Vue 集成到 GitBook 中可以通过插件或自定义构建流程实现,以下是具体方法: 使用 gitbook-plugin-vue 插件 安装插件到 GitB…

jquery页面

jquery页面

jQuery 页面操作指南 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互的操作。以下是 jQuery 在页面中的常见使用方法…

vue实现页面签字

vue实现页面签字

实现页面签名的Vue方案 在Vue中实现页面签名功能,可以通过HTML5的Canvas元素结合手势或鼠标事件来捕获用户绘制轨迹。以下是具体实现方法: 安装签名库(可选) 使用现成的Vue签名库如vu…

实现js页面跳转页面

实现js页面跳转页面

使用 window.location.href 通过修改 window.location.href 实现跳转,浏览器会加载新页面并记录到历史记录中: window.location.href = "…

vue实现页面转换

vue实现页面转换

Vue 实现页面转换的方法 Vue 提供了多种方式实现页面转换,主要包括路由切换动画和组件过渡效果。以下是几种常见的实现方法: 使用 Vue Router 和过渡动画 通过 Vue 的 <tr…