讲师中心 微信公众号
AI工具推荐 视频效率加速

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

秋墨吖_6159

秋墨吖_6159

发布时间:2026-05-08 06:53:21

|

770人浏览过

|

来源于php中文网

原创

必须手动绑定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>,要同步改 <th> 和可能存在的固定列、合计行等,否则视觉错乱

如何安全地批量修改所有行字体大小

Layui 表格渲染后,数据行在 .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>
    <button class="layui-btn layui-btn-sm" lay-event="font-md">中</button>
    <button class="layui-btn layui-btn-sm" lay-event="font-lg">大</button>
  </div>
</script>

<table id="demo" lay-filter="demo"></table>

<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 字太小”才想起来补。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

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

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

2483

2023.08.11

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

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

5363

2023.10.09

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

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

6390

2024.03.19

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

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

5978

2024.03.22

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

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

843

2024.05.22

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

0

2026.10.16

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

0

2026.10.15

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

0

2026.10.15

热门下载

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

精品课程

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

共0课时 | 0人学习

LLVM入门手册
LLVM入门手册

共0课时 | 0人学习

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

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn