javascript表头固定-2
来源:互联网 发布:许嵩所有歌曲知乎 编辑:程序博客网 时间:2024/05/21 17:02
感觉前一个js还是有点不怎么完善,还有其中的这种情况没有考虑进去-------表格被撑大时,表头不会对应发生变化。不过,还是稍稍会有点偏移(1-2个像素),不是非常完美。
下面贴出第二个版本:(此时每一次调用只能固定一个表头)
tableHeaderFlow.js文件:
/** * Created by Yuechang on 14-1-14. * Version 2.0 * 代码作用:表格表头的浮动效果 */function onScroll(className){ //获取可浮动表头列表 var trObj = document.getElementsByClassName(className)[0]; //表头对象(tr) if(trObj) { //top:鼠标滚动的距离 var top =(document.documentElement && document.documentElement.scrollTop)?document.documentElement.scrollTop:document.body.scrollTop; var tableObj = trObj.parentNode.parentNode; //表格对象 var tableOldPostion = tableObj.offsetTop; //表格原始位置 var tdHeight = trObj.offsetHeight; //表头对象的高度 var tableFootPostion=tableOldPostion+tableObj.offsetHeight-tdHeight;//表格底部位置 trObj.style.position="absolute"; //设置表头样式。 trObj.style.width = tableObj.offsetWidth + "px"; //设置表头宽度 trObj.style.left = tableObj.offsetLeft + "px"; //设置表头左偏移 trObj.style.border = "1px"; //如果,鼠标滚动的距离大于表格的原始位置,并且鼠标滚动的距离小于表格的底部 if( top > tableOldPostion && top < tableFootPostion) { trObj.style.top = top+"px"; } else{//如果表格回到原始位置,设置表格的绝对高度为表格的原始高度 trObj.style.top = tableOldPostion-tdHeight+2+"px"; } var tbodyObj = trObj.parentNode; //tbody对象 var trsObj = tbodyObj.children; //tbody的孩子集合对象 var secondTrObj = tableObj.rows[1];//tbody的第二个孩子,tr对象(非标题行) //tbodyObj.removeChild(tbodyObj.child(1)); /** * 问题重现:如果表格中文字过长会将表格撑大,导致表头各项与表格各项不对应 * 解决办法:重新设置表头样式,将表格中各项的宽度对应赋给表头 */ for(var i =0 ; i<trObj.cells.length;i++) { trObj.cells.item(i).style.width = secondTrObj.cells.item(i).offsetWidth+"px"; } }}
而与之对应的tableHeaderFlow.html文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title></title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type="text/css"> .style1{width: 100px; } .flowtitle{background: #0066bb; } .flowtitle2{background:greenyellow; } </style> <script type="application/javascript" src="demo7.js"></script> <script type="application/javascript"> window.onscroll = function(){ onScroll("flowtitle"); onScroll("flowtitle2"); } </script></head><body><br> <br> <br> <br><br> <br> <br> <br><br> <br> <br> <br><br> <br> <br> <br><br> <br> <br> <br><br> <br> <br> <br><br> <br> <br> <br><h1>hello</h1><table border="1" cellpadding="0" cellspacing="0"><tr class="flowtitle"> <th class="style1">1</th> <th class="style1">2</th> <th class="style1">3</th> <th class="style1">4</th> <th class="style1">5</th> <th class="style1">6</th> <th class="style1">7</th> <th class="style1">8</th> <th class="style1">9</th> <th class="style1">10</th></tr> 此处省略N个<tr>....</tr><tr> <td class="style1">1</td> <td class="style1">2</td> <td class="style1">3</td> <td class="style1">4</td> <td class="style1">5</td> <td class="style1">6</td> <td class="style1">7</td> <td class="style1">8</td> <td class="style1">9</td> <td class="style1">10</td></tr></table></div><br><table border="1"style="width: 1000px" cellpadding="0" cellspacing="0"><tr class="flowtitle2"> <th class="style1">11</th> <th class="style1">21</th> <th class="style1">31</th> <th class="style1">41</th> <th class="style1">51</th> <th class="style1">61</th> <th class="style1">71</th> <th class="style1">81</th> <th class="style1">91</th> <th class="style1">101</th></tr> 此处省略N个<tr>....</tr><tr> <td class="style1">1</td> <td class="style1">2</td> <td class="style1">3</td> <td class="style1">4</td> <td class="style1">5</td> <td class="style1">6</td> <td class="style1">7</td> <td class="style1">8</td> <td class="style1">9</td> <td class="style1">10</td></tr></table></body></html>
0 0
- javascript表头固定-2
- JavaScript固定表头
- JavaScript:固定table的表头
- HTML表头固定[2]
- 用javascript实现gridview的固定表头
- 固定表头列头Javascript代码
- GridView固定表头(不用javascript只用CSS)
- GridView固定表头(不用javascript只用CSS)?
- javascript表头固定-3(最终版)
- 原生javascript 固定表头原理与源码
- 表头固定
- 固定表头
- 固定 表头
- 表头固定
- 固定表头
- 固定表头
- 表头固定
- GridView固定表头(不用javascript只用CSS,2行代码,很好用)
- Android软件开发之获取通讯录联系人信息(二十九)
- 20本经典云计算书籍和内容简介
- SecureCRT,设置编码(UTF8)和背景色(黑白)
- yii CListView分页器
- 智能家居,小谈(一)
- javascript表头固定-2
- xcode : could not load inserted library: /usr/lib/libgmalloc.dylib 的解决
- 视频与图像RGB/YUV格式详解
- 基于WSP/WTP的MMS传输(2)——MMS的传输模型
- mysql 问题汇总
- openfire插件最佳实践(三) 用户加入指定群组功能
- Java IO流
- Linux网络编程基础和一步一步学
- 《CUDA并行程序设计:GPU编程指南》