layui table 重新设置表格的高度

在layui的table模块中,如果使用table.render({})渲染了一个表格实例时,确定了height配置,后续用table.resize(id)方法重置表格尺寸时,表格的高度是不会变化的(如果我的理解没有错的话)。

有时我们希望根据页面元素的变化,调整表格的高度,但不希望重新渲染一个新的表格,也不希望直接操作DOM元素的高度(代码会比较臃肿)。

所以我增加了一个调整高度的方法,使用了table模块会自动调整高度。

事先声明:我的项目中的layui是模块化的,并非构建后的layui.js,所以是在table.js增加了方法代码。如果你使用的是构建后的layui.js,需要自己去定位方法应该处于js的哪个位置。

以下是添加方法的过程:

(1)在table.js中,搜索“table.resize = function(id)”,找到resize方法的位置。

(2)以下是代码源码,可以添加到上图的位置,与resize方法平行

// 重置设置表格的高度配置
  table.resetHeight = function(id,height){
    // 若指定表格唯一 id,则只执行该 id 对应的表格实例
    if(id){
      var config = getThisTableConfig(id); // 获取当前实例配置项
      if(!config) return;

      //如果带有计算符号,则将高度计算得到结果(目前只支持+-)
      if(/^[+-]\d+$/.test(height)) {
        // 提取操作符号和数字  
        const sign = height.charAt(0); // 获取第一个字符作为符号  
        const number = parseInt(height.slice(1), 10); // 从第二个字符开始到字符串结束,转换为整数  

        // 根据符号更新高度值  
        if (sign === '+') {
           config.height += number;
        } else if (sign === '-') {
           config.height -= number;
        }
      }
      else {
        //如果是具体的值,则直接赋值
        config.height = height;
      }
      getThisTable(id).resize();
    }
  };

(3)在使用的时候,只需要调用table.resetHeight(yourTableId,newHeight)即可。

有两种使用方法:

1、table.resetHeight(yourTableId,300)

2、table.resetHeight(yourTableId,"+20")或table.resetHeight(yourTableId,"-20")

第一种方法是指定一个具体高度。

第二种方法则是在原高度的基础上的变化值,如增加20像素,或者减去20像素。我只添加了“加减”两种情况,如果需要其他计算方式,也可以自行拓展方法。

### Layui Table 设置高度为百分比 在 Layui 中,可以通过设置 `height` 属性来控制表格高度。当希望将表格高度设置为百分比时,需要注意父容器的高度也需要被定义,这样才能使百分比生效。 为了实现这一点,在 HTML 和 CSS 中都需要做一些配置: #### HTML 结构 确保表格所在的父级元素有固定的高度,这样子元素才能按照比例计算其自身的高度。 ```html <div style="height: 80vh;"> <table id="demo" lay-filter="test"></table> </div> ``` #### JavaScript 初始化 初始化表格并指定高度为百分比形式[^1]。 ```javascript layui.use('table', function(){ var table = layui.table; // 渲染表格实例 table.render({ elem: '#demo' ,height: '70%' // 表格高度设为父容器的70% ,url:'/demo/table/user/' // 数据接口 ,page: true // 开启分页 ,cols: [[ {type: 'checkbox'} ,{field:'id', title:'ID', width:80, sort: true} ,{field:'username', title:'用户名', width:120} ,{field:'sex', title:'性别', width:80, sort: true} ,{field:'city', title:'城市', width:92} ,{field:'sign', title:'签名', width:200} ,{field:'experience', title:'积分', width:80, sort: true} ,{field:'score', title:'评分', width:80, sort: true} ,{field:'classify', title:'职业', width:80} ,{field:'wealth', title:'财富', width:135, minWidth: 100} // 自定义最小宽度 ]] }); }); ``` 如果想要让表格内的单元格也支持显示百分比数值,并且不自动转换成其他格式,则可以利用自定义模板功能处理数据展示逻辑[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值