1、CSS

<style type="text/css">
#scroll_head {
position: absolute;
display: none;
}
</style>

2、Javascript

<script type="text/javascript">

    //该函数在上面一个table数据加载完成后调用
//把表头的宽度设置到会滚动的页头去
var copyWidth = function () {
var b = $('#data_tbody').prev().find('tr:last').find('th');
var c = $('#scroll_head').find('tr:last').find('th');
for (var i = 0; i < b.length; i++) {
var newWith = b.eq(i).width();
if ($.browser.msie) {
newWith += 1;
}
c.eq(i).width(newWith);
}
} $(function () {
$(window).scroll(function () {
if ($('#data_tbody').length > 0) {
var thead = $('#data_tbody').prev();
var thOffset = thead.offset();
var scTop = $(window).scrollTop(); //滚动条相对top的位置
if (scTop > thOffset.top) { //滚动条滚到thead及以下的位置,用临时的thead代替显示
$('#scroll_head').css('display', 'block');
$('#scroll_head').offset({ top: scTop, left: thOffset.left });
}
else { //滚动条滚到thead上的位置,用table的原始thead显示
$('#scroll_head').css('display', 'none');
}
}
});
});
</script>

3、Html内容

<div id="data_div">
<table>
@*thead内容及样式同scroll_head中的thead*@
@*thead使用深背景色,避免滚动时和tbody内容重叠显示*@
<thead>
<tr>
@*一级标题*@
<th class="tt1" colspan="2">一级1</th>
<th class="tt2" colspan="5">一级2</th>
<th class="tt3" colspan="6">一级3</th>
</tr>
<tr>
@*二级标题*@
<th style="width: 23px;">二级11</th>
<th style="width: 36px;">二级12</th>
<th class="tt" style="width: 40px;">二级21</th>
<th class="tt" style="width: 30px;">二级22</th>
<th class="tt" style="width: 30px;">二级23</th>
<th class="tt" style="width: 30px;">二级23</th>
<th class="tt" style="width: 30px;">二级24</th>
<th class="tt" style="width: 30px;">二级25</th>
<th class="tt" style="width: 30px;">二级31</th>
<th class="tt" style="width: 30px;">二级32</th>
<th class="tt" style="width: 30px;">二级33</th>
<th class="tt" style="width: 30px;">二级33</th>
<th class="tt" style="width: 30px;">二级34</th>
<th class="tt" style="width: 30px;">二级35</th>
<th class="tt" style="width: 30px;">二级36</th>
</tr>
</thead>
<tbody id="data_tbody">
数据内容,在数据加载完成后调用copyWidth()函数解决兼容性
</tbody>
</table>
</div>
<div id="scroll_head" style="display:block; top: 168px; left: 0px; position: relative;">
<table width="100%">
<thead> @*thead使用深背景色,避免滚动时和tbody内容重叠显示*@
<tr>
@*一级标题*@
<th class="tt1" colspan="2">一级1</th>
<th class="tt2" colspan="5">一级2</th>
<th class="tt3" colspan="6">一级3</th>
</tr>
<tr>
@*二级标题*@
<th style="width: 23px;">二级11</th>
<th style="width: 36px;">二级12</th>
<th class="tt" style="width: 40px;">二级21</th>
<th class="tt" style="width: 30px;">二级22</th>
<th class="tt" style="width: 30px;">二级23</th>
<th class="tt" style="width: 30px;">二级23</th>
<th class="tt" style="width: 30px;">二级24</th>
<th class="tt" style="width: 30px;">二级25</th>
<th class="tt" style="width: 30px;">二级31</th>
<th class="tt" style="width: 30px;">二级32</th>
<th class="tt" style="width: 30px;">二级33</th>
<th class="tt" style="width: 30px;">二级33</th>
<th class="tt" style="width: 30px;">二级34</th>
<th class="tt" style="width: 30px;">二级35</th>
<th class="tt" style="width: 30px;">二级36</th>
</tr>
</thead>
</table>
</div>

利用js、css、html固定table的列头不动的更多相关文章

  1. 使用css固定table第一列

    .table{width:100%;overflow-x: scroll;background-color:#7c95b5;} .fixedTable{width:160%;text-align: c ...

  2. JS组件系列——Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案

    前言:最近项目里面需要用到表格的冻结列功能,所谓“冻结列”,就是某些情况下表格的列比较多,需要固定前面的几列,后面的列滚动.遗憾的是,bootstrap table里自带的fixed column功能 ...

  3. jquery固定表头和列头

    1.对网上的开源方法稍作了些修改 <script type="text/javascript">// <![CDATA[ function FixTable(Ta ...

  4. 利用js制作html table分页示例(js实现分页)

    有时候table的列数太长,不利于使用者查询,所以利用JS做了一个table的分页,以下为相关代码 一.JS代码 <script type="text/javascript" ...

  5. 利用JS实现HTML TABLE的分页

    有时候table的列数太长,不利于使用者查询,所以利用JS做了一个table的分页,以下为相关代码 一.JS代码 <script type="text/javascript" ...

  6. 固定Table的头部和左边的列-在Knockout Js使用场景下

    要求:固定Table的头部和左边的列 场景:Knockout Js被用于绑定Table的数据源. 固定HTML表格的头部和列是一个很常见的需求.此文:http://www.cnblogs.com/so ...

  7. (转)supertable像excel那样固定table的表头和第一列

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <title> ...

  8. html table 固定表头和列

    /**************************************************************** jQuery 插件. 功能: 固定表格标题行或列头 Version: ...

  9. 利用JS脚本通过getAttribute()和setAttribute()等对CSS样式进行操作

    HTML中引入CSS样式的方式有三种: 1.最常用的,引入样式表,在样式表中编写样式,引入方式如下:<link href="css/style.css" rel=" ...

随机推荐

  1. Swift 脚本(运行时带参数)

    #!/usr/bin/env xcrun swift import Foundation let args = Process.arguments print("Arg:\(args)&qu ...

  2. 调试Python代码的工具

    pdb: 首先来说Python里内建的调试器,pdb.它利用一个简单的命令行界面,还有很多你在用调试器时用得上的功能.帮助系统能为你指出你能运行的命令,比如单步调试代码,操纵调用栈和设置断点. 一些它 ...

  3. permission denied部署django 遇到没有python_egg_cache的问题解决

    检查/etc/httpd/logs/error_log,看是否有如下错误: [Errno 13] Permission denied: '/var/www/.python-eggs' 这时候需要编辑“ ...

  4. KM算法详解+模板

    http://www.cnblogs.com/wenruo/p/5264235.html KM算法用来求二分图最大权完美匹配. 本文配合该博文服用更佳:趣写算法系列之--匈牙利算法 现在有N男N女,男 ...

  5. c# 邮件发送代码分享

    /// <summary> /// 发送邮件方法 /// </summary> /// <param name="sendMail">发送人&l ...

  6. 在VS2013中使用水晶报表

    又遇到了在B/S系统中打印,打印格式要求比较高,打印出的效果要求高大上.用VS2013中微软自带的报表,实在难以实现应用的效果,主要问题表现在: 1.不能插入用Word做好的打印模板,自己按照模板来做 ...

  7. Controlling GameObjects Using Components

    [Accessing Components] The most common case is where a script needs access to other Components attac ...

  8. SFTPTool 和 FTPTooL.java

    两个工具类依赖的jar包: FTPTool.java public static void main(String[] args) throws Exception{ FTPTooL ftpTool ...

  9. UVaLive 6801 Sequence (计数DP)

    题意:给定一个序列,有 n 个数,只有01,然后你进行k次操作,把所有的1变成0,求有多种方法. 析:DP是很明显的,dp[i][j] 表示进行第 i 次操作,剩下 j 个1,然后操作就两种,把1变成 ...

  10. 启动tomcat时 一闪而过解决方法

    1 首先确定JAVA 已经配好了环境变量,具体配置方法,找一下度娘. 测试方法:进入cmd -> javac -version 能看到JAVA的版本信息,证明配置成功了. 2 分析一下问题出现的 ...