Bootstrap的table组件,表头错位的解决

Bootstrap的table组件,固定表头的表格竖线对不齐的解决

问题描述:当表格定义高度时,其会自动变为表头固定的模式,但是在首次加载时,会出现表头thead的竖线,与表体的竖线无法对齐的情况。

通过渲染好的页面,在浏览器查看html结构时发现,固定表头的方式,是新增一个表头,这个新增的表头浮于源表格上部,刚好遮住原表头,这也滚轮滚动的时候,看上去是表头固定,这种方式必然需要新增的表头与原表头的宽度一一对应,js中一定有相应的计算逻辑,我去找了,没看懂。

最初解决是手动按照上面👆逻辑,去手写一个新的表格,也成功了,能保证始终对齐,只不过不如组件方便,而且不能每次都新的表格去改。

后来在按F12的时候,界面宽度发生变化时,表格的线突然对齐了,一开始猜测是由于body或者html变化宽度,其js重新计算宽度对齐了,于是尝试js调整body宽度和html宽度,并且瞬间再还原,结果没有变化。

之后又尝试触发resize事件,因为有可能组件的js依靠这个事件的触发,将线对齐。

  // 原生js: 通过
  window.onresize = function(){
    console.log("resize");
  }

  window.onresize(); // 成功触发
  
  // JQuery
  window.onresize = function (params) {
    console.log("resize");
  }

  $(window).trigger("resize"); // 成功触发

通过手动触发window.resize(),表格的线在表格首次刷新的时候,触发resize方法,然后线对齐了,我做的表格都带有分页功能,所以将这个触发,放在了每一次表格渲染之后,保证线始终对齐。

不知道其他人是否也有通过调整窗口,线会自动对齐的情况,如果也是这样,可以通过手动触发resize事件,对齐表格。如果是其他原因引起的,只能再找其他大神的方法的,源码有点看不下去,本来目的也只是解决自己这一类的问题,如果出现新bug的话,那就再去研究了。


**一个还是没有解决的问题**
  • 偶尔会出现切换页数后,滑动下方横向的滚轮时,表头的不随之运动,而是卡在某一个位置,不知有没有解决方法!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Bootstrap Table可以通过设置fixedHeader属性来固定表头。具体操作如下: 1. 在引入Bootstrap Table的代码中,添加fixedHeader: true属性,如下所示: ``` $('#table').bootstrapTable({ fixedHeader: true, //其他属性 }); ``` 2. 在CSS中添加以下样式: ``` .fixed-table-header { position: fixed; top: ; left: ; z-index: 1029; width: 100%; } ``` 3. 在HTML中添加一个div元素,用于包裹表格,并设置class为fixed-table-header,如下所示: ``` <div class="fixed-table-header"> <table id="table"></table> </div> ``` 这样就可以实现Bootstrap Table固定表头的效果了。 ### 回答2: Bootstrap 是一种流行的前端框架,其 table 组件常用于数据展示和数据交互页面的设计中。通常情况下,Bootstrap table 默认的表头和数据是同步滚动的,当表头过高而数据过多时,用户就需要不断地向上滚动,以查看表头中的属性名称,这无疑是一种不便利的体验。因此,出于对用户体验的考虑和提升页面设计的美观性,我们可以采用固定表头的方法来解决这个问题。 固定表头是指让表头在页面中固定位置不动,而表格中的数据可以滚动,从而保证表头和数据能够同时显示。在 Bootstrap 中,实现固定表头的方法有以下两种: 一、使用 JavaScript 插件 Bootstrap 中有很多 JavaScript 插件可以实现表头固定功能,如 bootstrap-table-fixed-header、fixedHeader 等。这些插件可以自动将表格中的表头暂存,在页面滚动时造成类似“表头栏”的固定效果。同时,它们也提供了丰富的样式设置,适用于页面的不同设计需求。使用这些 JavaScript 插件实现固定表头,需要在页面中引入对应的插件文件,并按官方文档中的示例进行调用设置。 二、使用 CSS 样式 我们可以通过 CSS 的 position 属性和 z-index 属性实现表头的固定。具体方法是:选取表头所在元素,在 CSS 中设置 position 属性为 fixed(表示固定定位),z-index 属性为较大的正整数,如 9999(表示在页面中最顶层),然后将表格数据所在元素的 padding-top 属性设置为表头所占高度(以便让表格数据不被表头遮挡)。这样,当页面滚动时,表头会固定在页面的顶部,而表格数据可以滚动。需要注意的是,由于表头被固定后,与表格数据独立开来,可能会导致列宽、列数等显示问题,需要个别设置其宽度、高度或添加其他样式。 综上所述,Bootstrap table 固定表头是让表头位置固定不动,而数据可以随着页面滚动而滚动。实现固定表头方法有 JavaScript 插件和 CSS 样式两种,我们可以根据自己的需求选择合适的方法。通过采用固定头的方法,可以增强页面的用户体验,提升页面的设计美学性。 ### 回答3: Bootstrap是目前最受欢迎的响应式框架之一,Bootstrap Table则是Bootstrap的一个插件,它可以让我们快速地在web应用中创建出漂亮的表格。 在Bootstrap Table中,固定表头是一个比较常见的需求,当表格中的数据过多时,表格会出现纵向滚动条,表头则会随着滚动条一起滚动,导致用户在查看数据的时候无法看到表头,影响用户的体验。因此,通过固定表头的方式可以解决这个问题。 Bootstrap Table中固定表头的实现方式有两种,一种是基于CSS的实现,另一种是基于JavaScript的实现。 1.基于CSS的实现 利用CSS样式,可以将表头固定在页面的某一个部位,示例代码如下: .table-fixed-header{ width: 100%; table-layout: fixed; border-collapse: collapse; } .table-fixed-header thead{ width: 100%; display: block; position: relative; } .table-fixed-header tbody{ width: 100%; display: block; overflow: auto; height: 300px; /*指定固定表高度*/ } .table-fixed-header th{ background-color:#f6f6f6; border:1px solid #ddd; font-weight:bold; text-align: left; width: 100px; padding: 10px; position: sticky; top: 0; } 上述代码中,.table-fixed-header是一个自定义的样式名称,其中table-layout: fixed;表示表格布局为固定宽度,display:block;表示将表格行转换为块元素,position:relative;表示相对定位,top:0;表示固定在顶部。 2.基于JavaScript的实现 另一种方法是通过JavaScript代码实现固定表头,通过计算表格的滚动位置,来固定表头的位置,示例代码如下: $(window).scroll(function() { $('table#table-header').each(function() { if ($(this).offset().top < $(window).scrollTop()) { $(this).css({ 'position': 'fixed', 'top': '0px', 'background-color': '#f6f6f6', 'border-top': '1px solid #ddd' }); } else { $(this).css({ 'position': 'static', 'background-color': '#fff', 'border-top': 'none' }); } }); }); 上述代码中,$(window).scroll()表示在滚动窗口时执行该函数,$('table#table-header')选择主键为“table-header”的表格,在滚动到第一个表格的位置时执行以下操作,通过CSS样式设置表头的样式和位置。 总之,在Bootstrap Table中固定表头可以通过CSS样式或JavaScript代码实现,通过以上两种方式可以实现较好的效果,提高用户的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值