Layui 2.8版本中如何实现表格的自适应高度(Full)模式

落芳大大_2837

落芳大大_2837

2026-06-19

1004人浏览

原创

layui表格高度需用"full-n"字符串配置,n为视口减去固定区域高度的像素值;必须手动绑定window.resize并调用tableins.resize(),全屏时还需监听fullscreenchange事件延迟16ms触发resize以确保重绘。

height 配置用 "full-n" 字符串,不是 "auto" 或数字

传 "auto" 会被 layui 忽略,回退到默认约 300px;填固定数字(如 500)则无法响应窗口变化。真正起效的自适应写法是字符串 "full-110" 这类格式,其中 110 表示从视口高度中减去的像素值(通常是顶部导航、搜索栏、分页栏等固定区域总高)。

常见错误是凭感觉写 "full-100",但实际页面结构变后(比如加了折叠面板、多行筛选项),这个值就偏了——结果要么底部留白过大,要么表格内容被截断。

  • 推荐先用浏览器开发者工具量出真实占用高度,再填入
  • 若顶部区块高度不固定(如侧边栏可收起),必须改用函数式 height: function(){...},且内部要用 $('#search-bar').outerHeight() 动态取值,别硬写魔法数字
  • "full-0" 理论上占满整个视口,但要注意表格自身有内边距和边框,实际可能溢出

table.resize() 不是可选操作,而是必调动作

光设了 height: "full-110" 不够。Layui 不会自动监听 window.resize,你得自己绑定并手动触发 table.resize(),否则用户拖拽浏览器边框后,表格高度完全不会更新。

关键点在于:必须先保存渲染实例,再监听事件:

var tableIns = table.render({<br>  elem: '#test',<br>  height: 'full-110',<br>  // ...其他配置<br>});<br><br>$(window).on('resize', function() {<br>  tableIns.resize();<br>});
  • 如果表格在 layui-layer 弹窗或 iframe 中,监听对象要换成 $(parent.window)
  • 2.9.1+ 版本才完整支持函数式 height 的自动响应;旧版(如 2.8)需在 resize 回调里调用 table.reload() 并传新 height 值
  • 别漏掉初始化执行一次:$(window).trigger('resize') 或直接调用 tableIns.resize()

全屏切换后表格错位?本质是 resize 没跟上 DOM 重排

调用 layui.fullscreen.toggle() 进入全屏后,视口尺寸突变,但 layui.table 不会自动重绘——尤其带 fixed: true 列或自定义 cellMinWidth 的场景,常出现列宽错乱、内容截断。

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载

核心修复动作是:在 fullscreenchange 全局事件中,延迟 16ms 再触发 table.resize():

document.addEventListener('fullscreenchange', function() {<br>  setTimeout(function() {<br>    tableIns.resize();<br>    // 有固定列时补这一句,强制重新计算滚动宽度<br>    table.getScrollWidth();<br>  }, 16);<br>});
  • 不要用 table.reload() 替代 resize(),它会重新请求数据,体验卡顿
  • 某些老项目 CSS 强制设了 .layui-table { width: 1200px !important },全屏时必须用 max-width: 100vw 覆盖,否则宽度撑不开
  • 退出全屏后若列宽异常,大概率是没监听 fullscreenchange 或延迟太短,DOM 还没完成重排就调了 resize()

maxHeight 和 height 同时存在时的行为

maxHeight 是 2.8+ 新增属性,作用是限制表格容器最大高度,超出部分显示滚动条。它和 height 可共存,但逻辑是:当 height 计算结果超过 maxHeight 时,以 maxHeight 为准。

典型用法是防止数据暴增导致表格撑爆页面:

table.render({<br>  elem: '#test',<br>  height: 'full-110',<br>  maxHeight: 600,<br>  // ...<br>});
  • maxHeight 只控制容器高度,不影响分页逻辑;分页仍由 page 和 limit 控制
  • 若同时设了 height: 400 和 maxHeight: 300,表格最终高度是 300px(因为 400 > 300)
  • 移动端或折叠侧边栏时,maxHeight 不会自动调整,仍需靠 resize 或 reload 重算

实际项目里最易忽略的是:fullscreenchange 事件监听必须全局注册,且延迟 16ms 不是可选项——它是让浏览器完成 layout 后再触发表格重绘的最小安全时机。 少了这一步,哪怕 height 配对了、resize 也绑了,全屏后照样错位。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2283

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4943

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6030

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5538

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

783

5

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

80

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

80

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.7万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 10.9万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习