css控制固定表头,兼容行列合并
项目中设计的报表table设计的列数相对过多,当拖动下方的滚动条时无法对应表头所对应的列,因此在网上搜索了好一段日子,最后在网上找到了一些参考资料,然后总结归纳出兼容行列合并的固定表头demo。
多浏览器没有做太多测试,在ie6中已测试通过。
功能期待了很久今天终于找到解决的方式,总结到javaeye中方便日后查阅。实现方式可能还有更好的,希望有大牛路过,给我留点更好的实现例子作日后交流之用。
以下是相关的css
- <style type="text/css">
- <!--
- body,table, td, a {font:9pt;}
- /*重点:固定行头样式*/
- .scrollRowThead{position: relative; left: expression(this.parentElement.parentElement.parentElement.parentElement.scrollLeft);z-index:0;}
- /*重点:固定表头样式*/
- .scrollColThead {position: relative;top: expression(this.parentElement.parentElement.parentElement.scrollTop);z-index:2;}
- /*行列交叉的地方*/
- .scrollCR { z-index:3;}
- /*div外框*/
- .scrollDiv {height:200px;clear: both; border: 1px solid #EEEEEE;OVERFLOW: scroll;width: 320px; }
- /*行头居中*/
- .scrollColThead td,.scrollColThead th{ text-align: center ;}
- /*行头列头背景*/
- .scrollRowThead,.scrollColThead td,.scrollColThead th{}
- /*表格的线*/
- .scrolltable{border-bottom:1px solid #CCCCCC; border-right:1px solid #CCCCCC; }
- /*单元格的线等*/
- .scrolltable td,.scrollTable th{border-left: 1px solid #CCCCCC; border-top: 1px solid #CCCCCC; padding: 5px; }
- .scrollTable thead th{font-weight:bold;position:relative;}
- -->
- </style>
以下是HTML
- <h1>利用CSS代码让Table产生固定表头</h1>
- <div id="scrollDiv" class="scrollDiv" >
- <table border="0" cellpadding="3" cellspacing="0" width="500" class="scrollTable">
- <thead>
- <tr class="scrollColThead" >
- <th class="scrollRowThead scrollCR" > </th>
- <th colspan="2">列头</th>
- <th colspan="2">列头</th>
- <th rowspan="2">列头</th>
- </tr>
- <tr class="scrollColThead" >
- <th class="scrollRowThead scrollCR" >h1</th>
- <th >h2</th>
- <th >h3</th>
- <th >h4</th>
- <th >h5</th>
- </tr>
- </thead>
- <tr>
- <td class="scrollRowThead" >
- <input type="checkbox" name="checkbox" value="checkbox">
- a</td>
- <td>单元格2</td>
- <td>单元格3</td>
- <td>单元格4</td>
- <td>单元格5</td>
- <td>单元格5</td>
- </tr>
- <tr>
- <td class="scrollRowThead" >
- <input type="checkbox" name="checkbox2" value="checkbox">
- b</td>
- <td>单元格2</td>
- <td>单元格3</td>
- <td>单元格4</td>
- <td>单元格5</td>
- <td>单元格5</td>
- </tr>
- <tr>
- <td nowrap class="scrollRowThead" >
- <input type="checkbox" name="checkbox3" value="checkbox">
- c</td>
- <td nowrap>单元格2</td>
- <td nowrap>单元格3</td>
- <td nowrap>单元格4</td>
- <td nowrap>单元格5</td>
- <td nowrap>单元格5</td>
- </tr>
- <tr>
- <td class="scrollRowThead" >
- <input type="checkbox" name="checkbox4" value="checkbox">
- d</td>
- <td>单元格2</td>
- <td>单元格3</td>
- <td>单元格4</td>
- <td>单元格5</td>
- <td>单元格5</td>
- </tr>
- <tr>
- <td class="scrollRowThead" >
- <input type="checkbox" name="checkbox5" value="checkbox">
- e</td>
- <td>单元格2</td>
- <td>单元格3</td>
- <td>单元格4</td>
- <td>单元格5</td>
- <td>单元格5</td>
- </tr>
- <tr>
- <td class="scrollRowThead" >
- <input type="checkbox" name="checkbox6" value="checkbox">
- f</td>
- <td>单元格2</td>
- <td>单元格3</td>
- <td>单元格4</td>
- <td>单元格5</td>
- <td>单元格5</td>
- </tr>
- <tr>
- <td class="scrollRowThead" >
- <input type="checkbox" name="checkbox7" value="checkbox">
- g</td>
- <td>单元格2</td>
- <td>单元格3</td>
- <td>单元格4</td>
- <td>单元格5</td>
- <td>单元格5</td>
- </tr>
- </table>
- </div>
另外补充一点,如果在表头合并的是最后一行的时候,排版将出现问题。由于上面合并的只有两行,因此样式没有受到改变,如果要处理,暂时的解决办法就是不合并rowspan最后一行,将其多行显示,有点牵强,但找不到解决办法。类似情况如下图:

找了些资料可作参考:
http://www.loveayang.com.cn/post/2008/04/e59bbae5ae9ae8a1a8e5a4b4e79a84CSSe5ae9ee78eb0.aspx
文章中亦说没有办法解决上述的这个问题,留待日后有更好的解决方案。
css控制固定表头,兼容行列合并的更多相关文章
- css实现“固定表头带滚动条”的table
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- CSS打造固定表头
html代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...
- js控制固定div和随屏滚动div兼容多浏览器和纯css控制(来自网络)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 纯CSS实现table表头固定(自创备忘)
因为之前约定时候产品没说要表头固定,这次迭代测试突然提出这个需求,而且不知道因为什么未知原因非要这样不可--因为之前用了table标签做表单,而且也没用插件,这下就难了点,找另外一个前端前辈妹子商量了 ...
- css 固定表头的表格,和 width:auto, margin:auto等 自计算方法
实现思路: 外层用一个table,里面写好Header,然后里面再写一个table里面写好header.然后自己控制overflow的值使内部的tablemargin-top和外层的行高一致就可以实现 ...
- html css 如何将表头固定(转)
html css 如何将表头固定 position属性取值为fixed时,则元素的位置将不受滚动条的影响,而是直接依据窗口定位,这就是将表头固定的最直接方法,网上其他途径感觉都是在走弯路.但是与此同时 ...
- html css 如何将表头固定
position属性取值为fixed时,则元素的位置将不受滚动条的影响,而是直接依据窗口定位,这就是将表头固定的最直接方法,网上其他途径感觉都是在走弯路.但是与此同时必须解决两个问题.第一:表体将随之 ...
- 固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生>
固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生> 先上图例 & 无论多少数据--都完美! 背景:由于我司行业方向,需要很多数据报表,则t ...
- CSS 控制table 滑动及调整列宽等问题总结
一. 通过css控制table y方向上滚动 html中没有滚动条,可以根据overflow属性的scroll来对table显示不完全的内容进行滚动. 只是y方向上滚动,很简单,只要设置div的hei ...
随机推荐
- 一种解决新版本API完全兼容老版本API的方法
原文:http://android.eoe.cn/topic/android_sdk 这节课程我们讨论如何创建一个实现类,即能对应新版本的API,又能够保持对老版本API的支持. * 寻找一个替代的解 ...
- Atitit html5.1 新特性attilax总结
Atitit html5.1 新特性attilax总结 9. 嵌入 header 和 footer1 7. 校验表单1 6. 浏览器的上下文菜单2 1. 响应式图像2 Attilax觉得还不错的心特性 ...
- Vue.js 入门指南
1.Vue.js是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注 ...
- 转:\r,\n,\r\n的区别
回车.换行的区别 他们间的区别其实是个回车换行的问题 先来段历史 回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别. 符号 ASCII码 ...
- windows远程连接mac配置方法
1.开启mac共享服务,设置通过密码进行连接 [系统偏好设置]中选择[共享]打开[屏幕共享]服务,即可允许其他电脑的用户远程查看并控制此电脑.点击[电脑设置]配置访问密码 2. 下载TightVNC, ...
- 关于RPG游戏结构撰写的相关探索上篇
本章节的目标是创造一个游戏理念.这个理念是: *简短的项目概括 *范围描述 *目标用户 *与其他游戏的区别 不要试图编写一款缺乏明确理念的RPG.因为这样可能只会产生与其他游戏雷同的项目. <i ...
- 【Socket】linux黑客之网络嗅探底层原理
1.mystery引入 1)网络嗅探属于网络攻防类的安全软件,其基于原始套接字技术开发的 2)原始套接字是一种套接字底层技术,它工作在网络层 3)谈到网络安全,刚好本学期学过这门课程,这里myst ...
- MyBatis教程目录
MyBatis教程目录 2017-10-18 摘自 YSOcean MyBatis教程目录: 1 mybatis 详解(一)------JDBC 2 mybatis 详解(二)------入门实例( ...
- Python爬取猫眼top100排行榜数据【含多线程】
# -*- coding: utf-8 -*- import requests from multiprocessing import Pool from requests.exceptions im ...
- Leetcode: Remove Duplicates from Sorted List II 解题报告
Remove Duplicates from Sorted List II Given a sorted linked list, delete all nodes that have duplica ...