zoukankan      html  css  js  c++  java
  • 解决Layui表格需表头固定悬浮的问题

     

    一、描述

    当表格内容过多:表头离开页面可视范围时,把表头固定悬浮在上面,如下图所示:
    [ 修改前 ]
    在这里插入图片描述[ 修改后 ]
    在这里插入图片描述

    二、解决

    思路:问题的关键是如何知道表头是否超出可视范围,首先我们需要知道表头到文档顶部的距离,这个距离是不会变的(除非操控DOM),然后监听滚动条滚动的距离。如果前者减去后者小于0,则表示离开了可视范围。

    先在Layui表格渲染完成的回调函数里写:

    done:function(res, curr, count) {
        let headerTop = $('.layui-table-header').offset().top; //获取表格头到文档顶部的距离
        $(window).scroll(function () {
           if ((headerTop - $(window).scrollTop()) < 0) { //超过了
               $('.layui-table-header').addClass('table-header-fixed'); //添加样式,固定住表头
           } else { //没超过
               $('.layui-table-header').removeClass('table-header-fixed'); //移除样式
           }
        });
    }
    然后再添加样式
    .table-header-fixed {
        top: 0;
        position: fixed;
        z-index: 999;
    }

    如果表格的列足够多,表格最下方就会有一个横向滚动条,我们拖动这个滚动条表格头由于固定了并不会跟着移动,为了解决这个问题,加上以下代码:

    //滚动body,header跟随滚动
    $('.layui-table-body').on('scroll', function(e) {
        var leftPx = $(e.target).scrollLeft(); //获取表格body,滚动条距离左边的长度
        var left = 'translateX(-' + leftPx + 'px)';
        $('.layui-table-header .layui-table').css('transform', left); //设置表格header的内容反向(-)移动
    });
    人生得意须尽欢,莫使金樽空对月.
  • 相关阅读:
    int是逻辑炸弹吗?
    悲剧
    下班啦
    Android SDK 2.2 开发环境安装
    MVC
    用于主题检测的临时日志(61d47e0cd5874842a9f56a725c1f25f6 3bfe001a32de4114a6b44005b770f6d7)
    ASP.NET读取XML文件
    asp.net执行顺序
    理解POCO
    乐观中谨慎 招聘调薪现"贫富差距"
  • 原文地址:https://www.cnblogs.com/luojie-/p/15292427.html
Copyright © 2011-2022 走看看