当前位置: 首页 > 知识库问答 >
问题:

vue.js - vxe-table自定义高度不生效如何解决?

陈晟睿
2025-03-09

比如表格无数据时,我想默认设置一个高度为200,表格有数据时,我想设置一个高度为40.这样写不生效如何解决?

min-height="tableData.length ? 40 : 200"

<vxe-table
  ref="tableRef"
  stripe
  :loading="loading"
  :min-height="tableData.length ? 40 : 200"
  :column-config="{resizable: true}"
  :scroll-y="{enabled: false}"
  :row-config="{isHover: true, keyField: 'id'}"
  :data="tableData"
  :checkbox-config="{checkRowKeys: defaultSelectRowKeys}"
  @checkbox-all="selectAllChangeEvent"
  @checkbox-change="selectChangeEvent"
/>

共有1个答案

丁宏浚
2025-03-09

在 vxe-table 中设置动态高度需要注意几个关键点:

  1. 使用 height 而不是 min-height 来实现动态高度
  2. 需要添加单位(如 px)
  3. 对于空数据的情况,推荐使用计算属性

修改后的实现方案:

<vxe-table
  ref="tableRef"
  stripe
  :loading="loading"
  :height="tableHeight" <!-- 改为使用计算属性 -->
  :column-config="{resizable: true}"
  :scroll-y="{enabled: false}"
  :row-config="{isHover: true, keyField: 'id'}"
  :data="tableData"
  :checkbox-config="{checkRowKeys: defaultSelectRowKeys}"
  @checkbox-all="selectAllChangeEvent"
  @checkbox-change="selectChangeEvent"
/>

// 在 script 中
computed: {
  tableHeight() {
    return this.tableData.length ? 400 : 200 // 注意这里要加单位或保持数值
  }
}

如果仍然不生效,可以尝试以下方法:

  1. 强制刷新表格:

    this.$nextTick(() => {
      this.$refs.tableRef.refresh()
    })
  2. 使用 CSS 辅助控制:

    .vxe-table--body-wrapper {
      min-height: 200px !important;
    }
  3. 检查父容器是否具有固定高度,表格高度需要基于父容器的高度进行计算

注意:40px 的高度可能过小无法正常显示表格内容,建议:

  • 使用 min-heightheight 结合
  • 根据行高自动计算高度:行高 * 数据条数 + 表头高度
  • 设置合理的最大/最小高度范围
 类似资料:
  • vxe-table 是一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等... 设计理念 面向现代浏览器,高效的简洁 API 设计 模块化表格、按需加载、插件化扩展 为单行编辑表格而设计,支持增删改查及更多扩展,强大的功能的同时兼具性能 功能  Bas

  • Element-UI table reserve-selection 如何生效? 我的在线代码 第一页选中了 1,2,3条 此时切换到第二页再切回来,为什么还是没有选中? 是我理解有问题吗? https://codepen.io/firstblood93/pen/vYMOeyN

  • 展开或者收起table cell的某一行。类似于QQ折叠的那种效果。 [Code4App.com]

  • 本文向大家介绍解决Android中自定义DialogFragment解决宽度和高度问题,包括了解决Android中自定义DialogFragment解决宽度和高度问题的使用技巧和注意事项,需要的朋友参考一下 关于详解Android应用中DialogFragment的基本用法,大家可以参考下。 1、 概述 DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用

  • 本文向大家介绍Android自定义进度条效果,包括了Android自定义进度条效果的使用技巧和注意事项,需要的朋友参考一下 最近项目中需要在一个功能模块中使用进度条,效果图如下: 上面图片从左到右分别是效果一,效果二,效果三 需求: 以下四点需要实现 1: 当没有没完成进度的时候,显示效果一 2:当进度完成了一部分,显示图二 3:当进度全部完成之后,显示效果三 4:当进度1到进度2需要动画,进度2

  • 主要内容:实例,实例,钩子,实例,实例除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时,元素获得焦点: 实例 <div id="app"> <p>页面载入时,input 元素自动获取焦点:</p> <input v-focus> </div> <script> // 注册一个全局自定义指令 v-focus Vue.d

  • el-table的合计行如何自定义单元格内容的样式? 使用summary-method方法可以自定义合计行的内容,但是我想实现合计行的某一列数据小于0则显示绿色,反之则显示红色,elementUI的文档没有给出自定义样式的方法,百度也搜不到,AI也是答非所问 例如

  • 本文向大家介绍vxe-table vue table 表格组件功能,包括了vxe-table vue table 表格组件功能的使用技巧和注意事项,需要的朋友参考一下 一个功能更加强大的 Vue 表格组件 查看vxe-table 功能点 •基础 •尺寸 •斑马线条纹 •带边框 •单元格样式 •列宽拖动 •流体高度 •固定表头 •固定列 •固定表头和列 •表头分组 •序号 •单选 •多选 •排序 •