Layui如何实现在表格工具栏添加一个控制整行字号大小的按钮

秋墨吖_6159

秋墨吖_6159

2026-05-08

770人浏览

原创

必须手动绑定toolbar按钮点击事件并监听table.on("tool(表名)"),通过addClass/removeClass切换预设字号类,同步更新th/td/固定列,再调用table.resize()重算列宽。

表格工具栏按钮如何绑定字号控制逻辑

直接在 toolbar 配置里加按钮是没用的——layui 的表格工具栏默认只响应内置事件(如 lay-event="del"),不自动执行任意 js。必须手动绑定点击事件,并拿到当前表格实例才能操作行内 dom。

常见错误是把按钮写成普通 HTML 后就以为能触发,结果点击完全没反应;或者用了 lay-event 却没在 on("tool") 里处理,导致事件监听失效。

  • 按钮必须放在 toolbar 对应的模板字符串中,且带唯一 lay-event 值,比如 lay-event="set-font-size"
  • 必须用 table.on("tool(你的表名)", ...) 监听该事件,不能写成 on("tool")(漏掉过滤器)
  • 字号修改不能只改 <td>,要同步改 <code><th> 和可能存在的固定列、合计行等,否则视觉错乱 <h3>如何安全地批量修改所有行字体大小</h3> <p>Layui 表格渲染后,数据行在 <code>.layui-table-body tbody tr 下,但直接用 $("tbody tr td") 会误改分页栏、加载提示等非数据区域。更稳妥的方式是通过表格实例的 config.elem 定位专属容器。

    另外,用 css("font-size") 覆盖会破坏原有 em/rem 设置,推荐用 class 切换——提前定义好 .layui-table-sm、.layui-table-lg 这类语义化类名,再用 addClass/removeClass 控制。

    • 不要用 document.querySelectorAll("td"),优先走 tableIns.config.elem.find("tbody td, thead th")
    • 避免直接设 style="font-size:14px",否则后续用 CSS 覆盖困难;统一用 class 控制,比如 layui-table-font-sm
    • 记得重置 .layui-table-fixed 里的对应列,否则左右滚动时字号不一致

    如何让字号变化实时生效且不破坏表格布局

    单纯改 font-size 可能导致单元格高度塌陷或文字溢出,尤其当内容含多行文本或图标时。Layui 的 cellMinWidth 和 minWidth 是基于默认字号计算的,字号变大后需手动调用 table.resize() 重新测量列宽。

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

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

    下载

    另一个坑是:如果表格启用了 height 固定高度,增大字号后行高超出,会出现滚动条遮挡或内容截断——此时要么取消 height,要么配合 cellHeight 动态调整行高。

    • 每次修改字号后,必须调用 table.resize(tableIns.config.id),否则列宽不会自适应
    • 若设置了 height: 500,建议同时用 css("line-height", "24px") 匹配新字号,防止行高挤压
    • 图标字体(如 )字号会随父级变化,无需单独处理,但要确认 iconfont 文件支持缩放

    完整可运行的最小改动示例

    假设表格容器 ID 是 demo,工具栏按钮要控制三档字号(12px / 14px / 16px):

    <script type="text/html" id="TABLE_TOOLBAR">
      <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" lay-event="font-sm">小
        <button class="layui-btn layui-btn-sm" lay-event="font-md">中
        <button class="layui-btn layui-btn-sm" lay-event="font-lg">大
      
    </script>
    <script> table.render({ elem: '#demo', toolbar: '#TABLE_TOOLBAR', // ...其他配置 }); table.on('tool(demo)', function(obj){ const $ = layui.jquery; const tableIns = obj.config; const $table = tableIns.config.elem; if(obj.event === 'font-sm'){ $table.removeClass('layui-table-font-md layui-table-font-lg').addClass('layui-table-font-sm'); } else if(obj.event === 'font-md'){ $table.removeClass('layui-table-font-sm layui-table-font-lg').addClass('layui-table-font-md'); } else if(obj.event === 'font-lg'){ $table.removeClass('layui-table-font-sm layui-table-font-md').addClass('layui-table-font-lg'); } table.resize(tableIns.config.id); // 关键:重算列宽 }); </script>

    CSS 部分只需补充三类样式,作用于整个表格容器即可,不用侵入每列:

    .layui-table-font-sm .layui-table-body td,
    .layui-table-font-sm .layui-table-header th { font-size: 12px; }
    .layui-table-font-md .layui-table-body td,
    .layui-table-font-md .layui-table-header th { font-size: 14px; }
    .layui-table-font-lg .layui-table-body td,
    .layui-table-font-lg .layui-table-header th { font-size: 16px; }
    

    真正麻烦的不是加按钮,而是确保所有浮动层(如弹出菜单、下拉选择器)、固定列、甚至打印样式都跟着字号同步变化——这些往往被忽略,直到用户反馈“导出 PDF 字太小”才想起来补。

相关文章

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

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

下载

相关标签:

layui

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

相关专题

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

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

2023.08.11

2463

5

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

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

2023.10.09

5303

6

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

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

2024.03.19

6350

13

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

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

2024.03.22

5938

10

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

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

2024.05.22

843

5

Python uv使用教程
Python uv使用教程

本专题汇总了 Python uv 使用教程与高效使用指南,从 uv 安装配置、常用命令到虚拟环境、依赖管理与项目打包,系统讲解如何用 uv 替代 pip 与 poetry,全面提升 Python 项目开发效率,助你快速上手这一现代化包管理工具,打造干净高效的 Python 工作流。

2026.10.15

0

15

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

2026.10.14

0

15

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

2026.10.14

0

14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

2026.10.14

0

15

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
JDK 27官方文档
JDK 27官方文档

共0课时 | 0人学习

LLVM入门手册
LLVM入门手册

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习