当前位置:首页 > 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>

响应式布局处理

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

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

相关文章

css制作滑动页面

css制作滑动页面

使用CSS实现滑动页面 通过CSS可以实现多种滑动页面效果,包括横向滑动、纵向滑动以及视差滚动等。以下是几种常见的实现方法: 横向滑动效果 横向滑动通常用于展示一组卡片或图片,可以通过CSS的ove…

h5实现登录页面跳转

h5实现登录页面跳转

实现登录页面跳转的基本方法 使用HTML5和JavaScript实现登录页面跳转,可以通过表单提交或JavaScript事件触发。以下是几种常见方式: 表单提交跳转 在HTML中创建一个表单,通过a…

h5页面实现vr

h5页面实现vr

实现H5页面VR效果的方法 在H5页面中实现VR(虚拟现实)效果,可以通过以下几种技术方案实现: 使用WebVR API WebVR是一个实验性的JavaScript API,提供了访问VR设备的功…

uniapp前端页面

uniapp前端页面

Uniapp 前端页面开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

h5实现页面切换

h5实现页面切换

h5实现页面切换的方法 在H5中实现页面切换可以通过多种方式完成,包括使用原生HTML链接、JavaScript动态加载、框架路由等。以下是几种常见的方法: 使用原生HTML的<a>标…

vue 实现页面注册

vue 实现页面注册

Vue 实现页面注册功能 在 Vue 中实现用户注册功能通常需要以下步骤: 创建注册表单组件 使用 Vue 的单文件组件结构创建一个注册表单,包含必要的输入字段如用户名、邮箱、密码等。 <…