实现table表格固定顶部标题栏和左侧标题栏

1 篇文章 0 订阅
1 篇文章 0 订阅
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
.main{
        width: 1500px;
        overflow:auto;
        height:600px;  /* 设置固定高度 */
    }
td {
    /* 设置td,th宽度高度 */
    border:1px solid gray;
    width:100px;
    height:30px;
}

table {
    table-layout: fixed;
    width: 200px; /* 固定宽度 */
}

.frozenRow{
    position:sticky;
    z-index:1;
    background: #ccc;
}

.frozenColumn{
    position:sticky;
    z-index:1;
    background: #f00;
}

.frozenColumnRow
{
    z-index:2;
    background-color:#f00;
}

    </style>
</head>
<body>
    <div  class="main">
            <table  cellspacing="0" >
                <tbody style="position:relative;">
                    <tr>
                        <td style="width: 100px;">序号</td>
                        <td style="width: 100px;">水果</td>
                        <td  style="width: 200px;">内容</td>
                        <td  style="width: 300px;">内容</td> 
                        <td>内容</td>
                        <td>内容</td>
                        <td>内容</td>
                        <td style="width: 500px;">内容</td>
                        <td style="width: 300px;">内容</td>
                        <td style="width: 300px;">内容</td>
                    </tr>
                    <tr>
                        <td style="width: 100px;">序号</td>
                        <td  style="width: 100px;">水果</td>
                        <td  style="width: 200px;">内容</td>
                        <td  style="width: 300px;">内容</td> 
                        <td>内容</td>
                        <td>内容</td>
                        <td>内容</td>
                        <td style="width: 500px;">内容</td>
                        <td style="width: 300px;">内容</td>
                        <td style="width: 300px;">内容</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                    </tr>
                    <tr>
                        <td>2</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>3</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>4</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>5</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>6</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>7</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>


                    </tr>
                    <tr>
                        <td>8</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>9</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>苹果</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>
                        <td>1111111</td>


                    </tr>
                    <tr>
                        <td>10</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>11</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>12</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>13</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>14</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>15</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>14</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>15</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>14</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>15</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>14</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>15</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr> <tr>
                        <td>14</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>15</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>14</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                    <tr>
                        <td>15</td>
                        <td>苹果</td>
                        <td>1111111</td>

                    </tr>
                </tbody>
            </table>
        </div>

</body>

<script>



  //列冻结
  function frozenColumn(column)
  {  
   let tdLeft = 0;
   for(let i= 1 ; i<= column ; i++){
     let currentTds = document.querySelectorAll(`td:nth-child(${i})`);
     currentTds.forEach((item)=> {
        item.classList.add('frozenRow')
    })
    let frozenRow = currentTds[0];
    currentTds.forEach((item)=> {
        item.style.left = `${tdLeft}px`;
    })
    tdLeft+= frozenRow.offsetWidth;
    frozenCrossChild();
}
  }

//行冻结
  function frozenRow(row)
  {
    let tdTop = 0;
    for(let i= 1 ; i<= row ; i++){
    let currentTds = document.querySelectorAll(`tr:nth-child(${i}) td`);
    currentTds .forEach((item)=> {
        item.classList.add('frozenColumn')
    })
    let frozenRow = currentTds[0];
    currentTds.forEach((item)=> {
        item.style.top = `${tdTop}px`;
    })
    tdTop+= frozenRow.offsetHeight;
    }
    frozenCrossChild();
  }

 

//单独处理交叉元素
  function frozenCrossChild()
  {
    let frozenColumnRow = document.querySelectorAll('.frozenColumn.frozenRow');
    frozenColumnRow.forEach((item)=> {
        item.classList.add('frozenColumnRow')
    })
  }

     frozenColumn(2); //从1到2列 全部固定
     frozenRow(5);  //从1-5行 全部固定
     
</script>
</html>

实现table表格固定顶部标题栏和左侧标题栏。

如图:

第1-5行全部固定,第1-2列全部固定

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值