固定table表头

项目中需要在滚屏中悬浮TABLE表头title,在网上找到一个不错的例子,思路为克隆当前TABLE的表头悬浮在滚动条容器顶端,开发中发现时常会出现表头与数据行错位的情况,故略作改进,即克隆TABLE表头和第一行数据(实际是table的第二行),并使用css的opacity,使第一行数据透明不可见,如此便解决了这个问题,不受table表列的宽度影响。
代码如下:

<html>  
<head>  
<title>固定表头</title>  
</head>  
<style>  
    .box{  
        width:100%;  
        height:100%;
        overflow-y:auto;/** 必须,否则当表格数据过多时,不会产生滚动条,而是自动延长该div的高度 */  
        position:relative;/** 必须,若不设置,拷贝得来的表头将相对于其设置该属性为该值的父节点(或间接父节点)定位,如果没有,则相对于body */  
    }  
    table,tr,th,td{  
        border-collapse:collapse;  
    }  
    table{  
        width:100%;  
    }  
    td{  
        height:24px;  
        line-height:24px;  
        padding:3px 5px;  
        background-color:#ddd;  
        word-break:break-all;/** 设置当文本过长时换行 */  
            border:1px solid #ccd;  
    }  

    th{  
        height:24px;  
        line-height:24px;  
        background-color:#cfc;  
        border:1px solid #ccd;  
    }  
    .opacityTD td{height:1px; line-height:1px; filter: alpha(opacity=0); -moz-opacity: 0; opacity: 0; border: 0;}
</style>  
<SCRIPT LANGUAGE="JavaScript">  

/**  
 * 功能:固定表头  
 * 参数  viewid     表格的id  
 *           scrollid   滚动条所在容器的id,此div的overflow-y必须设置为auto或scroll;
 *       size       表头的行数(复杂表头可能不止一行)  
 */  
function fixTableTitle(viewid,scrollid,size){  
        var scroll = document.getElementById(scrollid);
        // 将表格拷贝一份
      var tb2 = document.getElementById(viewid).cloneNode(true); 
        // 将拷贝得到的表格保留表头和第一行数据 
      for(var i=tb2.rows.length;i>size+1;i--){  
          // 每次删除数据行的第一行  
          tb2.deleteRow(size);  
      }
      var child = tb2.getElementsByTagName("tr")[1];//获取数据行
      if(typeof(child)=='undefined')return;// 若没有数据,则跳出此方法
      child.className = "opacityTD";//设置样式透明不可见
        // 创建一个div
      var bak = document.createElement("div");  
      var attr_id = document.createAttribute('id');                        //新建Element的id属性
      attr_id.nodeValue = 'div'+scrollid;                                    //为id属性赋值
      bak.setAttributeNode(attr_id);                                //为Element设置id属性
        // 将创建得到的div添加到滚动条所在容器的div
      scroll.appendChild(bak);  
        // 将拷贝得到的表格在删除数据行后添加到创建的div中
      bak.appendChild(tb2);  
      // 设置此DIV的属性
      bak.style.position = "absolute";  
      bak.style.display = "block";  
      bak.style.left = 0;  
      bak.style.top = "0px";  
      bak.style.width = "100%";  
      // 给滚动条容器绑定滚动条滚动事件,在滚动条滚动事件发生时,调整拷贝得来的表头的top值,保持其在可视范围内,且在滚动条容器的顶端  
      scroll.onscroll = function(){
            var topH = this.scrollTop;//document.body.screenTop;
            bak.style.top = topH + "px";
      }
}
// 在页面加载完成后调用该方法  
window.onload = function (){  
    fixTableTitle("tab2",'box2',1);  
}  

</SCRIPT>  
<body>  
        <div class="box" id="box2">  
            <table id="tab2">  
                <tr>
                    <th width="5%">序号</th>
                    <th width="10%">姓名</th>
                    <th width="20%">身份证号</th>
                    <th width="15%">费款所属期</th>
                    <th width="10%">缴费基数</th>
                    <th width="15%">个人缴费金额</th>
                    <th width="15%">单位缴统筹金额</th>
                    <th width="10%">缴费标志</th>
                </tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
                <tr><td>1</td><td>唐三藏</td><td>678675196608230764</td><td>201501</td><td>34534</td><td>1234</td><td>3234</td><td>已缴</td></tr>  
            </table>  
        </div>
</body>  
</html> 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过使用`header-style`和`row-style`属性来修改`el-table`的表头和表格的背景颜色。 1. 修改表头的背景颜色: 你可以使用`header-style`属性来自定义表头样式。通过设置该属性,你可以指定表头的背景颜色。 ```html <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名" header-style="background-color: #f0f0f0;"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> ``` 在上面的示例中,`header-style`属性被添加到了第一个表头列上,并设置了背景颜色为 `#f0f0f0`。 2. 修改表格的行背景颜色: 你可以使用`row-style`属性来自定义表格行的样式。通过设置该属性,你可以指定表格行的背景颜色。 ```html <el-table :data="tableData" style="width: 100%" row-style="rowStyle"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> ``` 在上面的示例中,我们将`row-style`属性设置为一个方法 `rowStyle`,并在方法中返回一个对象,其中可以指定行样式的各种属性,如背景颜色。 ```javascript export default { methods: { rowStyle(row, index) { if (index % 2 === 0) { return { background: '#f0f0f0', }; } }, }, }; ``` 在上面的示例中,我们通过 `rowStyle` 方法来设置奇数行的背景颜色为 `#f0f0f0`。 通过使用`header-style`和`row-style`属性,你可以自定义`el-table`的表头和表格的背景颜色。你可以根据实际需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值