bootstrap-table实现表头固定以及列固定的方法示例


Posted in Javascript onMarch 07, 2019

之前使用bootstrap写了一个报表表格,最近突然找到我,说让我看看能不能将表格的表头和第一列进行固定,这样的话方便查看数据,于是,我开始了苦逼的研究起来,毕竟我是个后端啊,对于前端的样式问题,特别是小功能,烦的一批
这里就记录下我的研究成果

一:引入js和css

<!-- 引入jquery -->
<script type="text/javascript" src="./js/jquery-3.3.1.min.js"></script>
<!-- 引入bootstrap的js和css文件 -->
<link rel="stylesheet" href="./css/bootstrap.min.css" rel="external nofollow" >
<script src="./js/bootstrap.min.js" ></script>
<!-- 固定表头所需的js和css(bootstrap-table) -->
<link rel="stylesheet" type="text/css" href="./css/bootstrap-table.min.css" rel="external nofollow" >
<script src="./js/bootstrap-table.min.js"></script>
<!-- 固定列所需的js和css(bootstrap-table-fixed-columns) -->
<link rel="stylesheet" type="text/css" href="./css/bootstrap-table-fixed-columns.css" rel="external nofollow" >
<script src="./js/bootstrap-table-fixed-columns.js"></script>

query下载地址:https://3water.com/zt/jquerydown.htm
bootstrap下载地址:http://www.bootcss.com/
bootstrap-table下载地址:https://bootstrap-table.com
bootstrap-table-fixed-columns下载地址:https://github.com/wenzhixin/bootstrap-table-fixed-columns

这里注意:

引入jquery时,不要引入jquery2.0.0(包括2.0.0)版本以下,如果你引入了2.0.0版本以下的jquery的话,当你编写完代码之后,在控制台会出现如下错误:

bootstrap-table实现表头固定以及列固定的方法示例

二:编写table表格(固定表头)

<table class="table table-bordered" id="table" data-toggle="table" data-height="200">
<thead>
<tr>
  <th>表头一</th>
  <th>表头二</th>
  <th>表头三</th>
  <th>表头四</th>
 </tr>
</thead>
<tbody>
<tr>
  <td>1</td>
  <td>2</td>
  <td>3</td>
  <td>4</td>
 </tr>
 <tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
 </tr>
</tbody>
</table>

上面代码中的table标签中的data-toggle="table"表示的是启用bootstrap表格,data-height="200"表示设置表格的高度,用于配置固定表头。由于我这里编写的表格数据较少,所以展示出来的数据可能不会出现滑轮,看不出来固定表头现象,你可以向表格中添加多一点数据就可以了

三:固定列

<script>
$(function(){
 //#table表示的是上面table表格中的id
 $("#table").bootstrapTable('destroy').bootstrapTable({
  fixedColumns: true, 
  fixedNumber: 1 //固定列数
 });
})
</script>

四:当浏览器窗口变化时,表头与表格不对齐解决:

<script>
$(function(){
$('#table').bootstrapTable();
 $(window).resize(function () {
  $('#table').bootstrapTable('resetView');
 });
})
</script>

五:初次展示时表头和表格数据不对齐解决(个人使用的方法,方法有点傻)

进过上面的过程我们已经实现了表格的表格和列固定功能了,于是我便开始将报表修改起来,开始修改起来十分的轻松,没有问题,但是,当我修改到一个报表的时候发现,开始的时候,表头和数据之间就发生了不对齐现象:

bootstrap-table实现表头固定以及列固定的方法示例

于是我开始在网上搜索起来,但是网上搜索的答案根本解决不了,例如:

找到bootstrap-table的源码中

if (this.options.showHeader && this.options.height) {
   this.$tableHeader.show();
   //注释掉下面两行 取消表头初始化解决表头和内容不对齐问题
   //this.resetHeader();
   //padding += this.$header.outerHeight();
}

不知道写这个的兄弟有没有自己测试过,反正我注释了之后,确实表头和数据对齐了,但是表头固定功能消失了,表头和数据不对齐的原因就是因为你设置了固定表头影响的,你这样将表头固定功能去掉了,那么我直接将table标签中的data-height="200"去掉不久行了吗,为什么还要改源码呢?

于是我自己开始研究起来

最后我使用审查元素找到错位的表头位置,发现这样一段代码

<div class="fht-cell" style="width: 146px;"></div>

这里将宽度设置为了146但是我的数据宽度只有120,这才造成了错位,

然后我找到bootstrap-table源码设置div的class为fht-cell宽度的代码位置

bootstrap-table实现表头固定以及列固定的方法示例

虽然我找到了问题所在,但是源码哪里出问题了,我还是不清楚,有知道的伙伴,欢迎告诉我答案

既然我不知道源码出问题出在哪,那么我就使用十分傻的方法,直接设置class为fht-cell的宽度,将之前宽度为146的覆盖

.fht-cell{width:120px!important;}

然后打开观看,错误问题解决了!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
限制复选框的最大可选数
Jul 01 Javascript
使用IE的地址栏来辅助调试Web页脚本
Mar 08 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
JavaScript将页面表格导出为Excel的具体实现
Dec 27 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
Jun 15 Javascript
详解vue.js2.0父组件点击触发子组件方法
May 10 Javascript
浅谈使用React.setState需要注意的三点
Dec 18 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
Apr 29 Javascript
原生js实现each方法实例代码详解
May 27 Javascript
用Javascript实现发送短信验证码间隔功能
Feb 08 Javascript
正则表达式基础与常用验证表达式
Jun 16 Javascript
js如何获取图片url的Blob值并预览示例代码
Mar 07 #Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 #Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 #Javascript
vue项目前端埋点的实现
Mar 06 #Javascript
vue2.0结合Element-ui实战案例
Mar 06 #Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
Mar 06 #Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 #jQuery
You might like
PHP4之真OO
2006/10/09 PHP
批量修改RAR文件注释的php代码
2010/11/20 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
javascript各种复制代码收集
2008/09/20 Javascript
javascript 简练的几个函数
2009/08/29 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Python使用python-docx读写word文档
2019/08/26 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
通息工程毕业生自荐信
2013/10/16 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
总经理助理岗位职责
2015/01/31 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL