给table组件(有固定列的时候)固定表头的功能实现

这篇具有很好参考价值的文章主要介绍了给table组件(有固定列的时候)固定表头的功能实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,增加height属性

在props中添加height属性, 保证在父组件中可以传值。如果父组件不传值,那么就是undefined

props: [
   .....
    "height",
  ],

2,修改样式

最主要的是thead和tbody的样式,其中都是根据height去动态控制thead和tbody的样式,注意下面三个类所在的位置以及对应的样式。

  • cvn-table-head-row
  • cvn-table-body-row
  • cvn-table-body-row-left
function table(cols, fixed) {
      if (fixed === "right") mark = "right";
      return createElement(
        "table",
        {
          class: {
            "cvn-table-inner": true,
            "cvn-table-simple": vm.theme === "simple",
            "cvn-table-main": fixed === undefined,
            "cvn-table-fixed-left": fixed === "left",
            "cvn-table-fixed-right": fixed === "right",
            "cvn-table-oneline": vm.validOneline,
          },
          attrs: {
            "cvn-table-id": vm.tableID,
            name:
              fixed === "left"
                ? "cvn-table-fixed-left"
                : fixed === "right"
                ? "cvn-table-fixed-right"
                : "cvn-table-main",
          },
        },
        [
          createElement(
            "thead",
            {
              class: {
                "cvn-table-row-container": true,
                "cvn-table-head-row": vm.height,
              },
            },
            [parseHeader(cols)]
          ),
          createElement(
            "tbody",
            {
              class: {
                "cvn-table-row-container": true,
                "cvn-table-body-row": vm.height,
                "cvn-table-body-row-left":
                  fixed === "left" || (mark === "right" && fixed !== "right"),
              },
              attrs: {
                name: "cvn-table-body",
              },
              ref: `tableBodyRef${vm.tableID}`,
              on: {
                scroll: () => {
                  vm.throttlenScrollYWatch && vm.throttlenScrollYWatch();
                },
              },
            },
            vm.validData.length === 0
              ? [parseEmptyRow(cols.length, fixed === undefined ? true : false)]
              : expandCol
              ? parseRowPairs(
                  cols,
                  fixed === undefined ? expandCol : null,
                  vm.validData
                )
              : vm.validData.map((rowData, index) =>
                  parseRow(cols, rowData, index)
                )
          ),
        ]
      );
    }

相关的样式设计:

/**固定表头的样式--thead相关设置 */
.cvn-table-head-row {
  width: 100%;
  display: table;
}

/**固定表头的样式--tbody相关设置 */
.cvn-table-body-row {
  height: v-bind(heightN);
  overflow: auto;
  overflow-x: hidden;
  display: block;
}

.cvn-table-body-row-left {
  overflow-y: hidden;
}

3,js相关逻辑(如果具有固定列的情况下)

在2中的tbody中,绑定了一个滚动事件,就是在body滚动的时候触发的事件。

在触发事件中,主要是让固定列和其他列保持一个滚动的一致性。

做法:通过nameItem值去获取所有列的body标签,进行同步的scrollTop一致即可。文章来源地址https://www.toymoban.com/news/detail-653299.html

function scrollYWathEffect($$el) {
  let elFixedLeftBody =
    $$el.children.namedItem("cvn-table-fixed-left") &&
    $$el.children
      .namedItem("cvn-table-fixed-left")
      .children.namedItem("cvn-table-body");
  let elFixedRightBody =
    $$el.children.namedItem("cvn-table-fixed-right") &&
    $$el.children
      .namedItem("cvn-table-fixed-right")
      .children.namedItem("cvn-table-body");
  let elMainBody = $$el.children
    .namedItem("cvn-table-view")
    .children.namedItem("cvn-table-main")
    .children.namedItem("cvn-table-body");
  if (elFixedRightBody) {
    let elFixedRightBodyScroll = elFixedRightBody.scrollTop;
    if (elMainBody) elMainBody.scrollTop = elFixedRightBodyScroll;
    if (elFixedLeftBody) elFixedLeftBody.scrollTop = elFixedRightBodyScroll;
  } else if (elFixedLeftBody) {
    let elMainBodyScroll = elMainBody.scrollTop;
    elFixedLeftBody.scrollTop = elMainBodyScroll;
  }
}

到了这里,关于给table组件(有固定列的时候)固定表头的功能实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue 中 Element UI 的 el-table 组件实现动态表头和内容

    在 Vue 中使用 Element UI 的 el-table 组件时,为了实现动态表头(包括第一层表头及其下的嵌套表头或子表头)。需要后端返回的数据结构能够体现表头层级关系以及对应的数据结构相匹配。这样的数据通常是一个嵌套数组,每个表头单元可能包含自身的列信息以及它的子表头和

    2024年01月20日
    浏览(42)
  • 【Vue3+element plus 】el-table滚动条、固定列fixed、表头超出内容隐藏并显示省略号

            element plus中el-table采用的是el-scrollbar,无法采用全局默认滚动条样式修改,需要单独写公共样式。 原生滚动条样式 el-table滚动条样式 效果图:         el-table设置了自定义样式后,为el-table-column添加fixed=\\\"right\\\"属性,此时表格侧边栏固定列出现样式错乱,自定义

    2024年02月12日
    浏览(43)
  • 【.net core】yisha框架,bootstrap-table组件增加固定列功能

    需要引入 bootstrap-table-fixed-columns.css和bootstrap-table-fixed-columns.js文件 文件代码: bootstrap-table-fixed-columns.css样式文件代码 bootstrap-table-fixed-columns.js脚本文件代码:  样式及脚本存放路径 项目bundleconfig.json文件修改内容为图片中红框标记内容 yisha-jquery-bootstrap-table-plugin.js脚本文件

    2024年01月21日
    浏览(35)
  • element-ui 设置table表头固定

    设置包裹table组件的标签flex:1 将table高度设为100% 统一设置样式,在App.vue添加样式: 对应界面设置样式

    2024年02月11日
    浏览(79)
  • 记录--组件库的 Table 组件表头表体是如何实现同步滚动?

    在使用 Vue 3 组件库 Naive UI 的数据表格组件 DataTable 时碰到的问题,NaiveUI 的数据表格组件 DataTable 在固定头部和列的示例中,在键盘操作下表格横向滚动会有问题,本文是记录下解决问题的过程,并最后向 Naive UI 提交 PR。 问题复现步骤: 鼠标点击表头,此时按键盘左右键,

    2024年02月12日
    浏览(25)
  • react使用antd的table组件,实现点击弹窗显示对应列的内容

    特别提醒:不能在table的columns的render里面设置弹窗组件渲染,因为这会导致弹窗显示的始终是最后一行的内容,因为这样渲染的结果是每一行都会重新渲染一遍这个弹窗并且会给传递一个content的值,渲染到最后一行的时候,就传递的是最后一行的值。这就导致你有多少行数据

    2024年02月12日
    浏览(27)
  • BootStrap table 左侧固定列,表头固定 垂直滚动条,水平滚动条展示在可视化界面

    例如:  不管垂直滚动条怎么滚动  ( 蓝色表头 )表头始终在不动; 列数过多时除了左侧固定的列  其他列通过水平滚动条进行滚动; 加入height  固定表头 上下滚动表头一直在最上方 效果:  大功告成!!!

    2024年02月06日
    浏览(27)
  • element-ui 表格el-table高度不是一个固定值时固定表头

    elementui中为表格组件提供了height属性实现固定表头 height可以为数字或者字符串,当为一个数字时表示固定的高度,也可以为百分比等字符串。 当height不是一个固定值时,如期望表格可以填充完页面剩余空间,并且固定表头时,可以通过给height属性赋值字符串形式实现。以页

    2024年01月25日
    浏览(45)
  • el-table实现动态表头,自定义斑马纹等功能

    需求:1.根据选择的日期时间,实现表头的动态显示功能            2.修改默认表头灰色样式,            3.斑马纹偶数灰色改为奇数为灰色            4.表格某一行加分割线区分 1. height: 表格的高度设置,内容超出后会显示滚动条,高度固定 2. :row-class-name: 行类名,

    2024年02月16日
    浏览(29)
  • vue element ui table表格--实现列的显示与隐藏

    实现效果 提示:代码段太简单就不解释了,自己看代码自己更改,下面代码直接无脑复制更改就行

    2024年02月02日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包