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 相关文章推荐
基于jquery的超简单上下翻
Apr 20 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
Vue.js每天必学之表单控件绑定
Sep 05 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
基于layui轮播图满屏是高度自适应的解决方法
Sep 16 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
Nov 06 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
Feb 01 Javascript
微信小程序实现简单文字跑马灯
May 26 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
Jun 07 Javascript
Webpack的Loader和Plugin的区别
Nov 09 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
PHP安装全攻略:APACHE
2006/10/09 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue mounted组件的使用
2018/06/18 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
python实现最长公共子序列
2018/05/22 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
python面试题之列表声明实例分析
2019/07/08 Python
postman传递当前时间戳实例详解
2019/09/14 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
小学生民族团结演讲稿
2014/08/27 职场文书
老公出轨后的保证书
2015/05/08 职场文书
导游词之张家界
2019/10/31 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
实现GO语言对数组切片去重
2022/04/20 Golang