angular 簡單固定表格的首行與首列


html

<div id="tablediv" (scroll)="this.scroll($event)" style="width:100%;height:calc(100% - 30px);overflow: auto;">
   <table cellspacing="0">
       <tr class="tableheader">
           <th *ngFor="let c of columns;let i=index" [class.frozencol]="!i">{{c.name}}</th>
       </tr>
       <tr *ngFor="let r of rows">
           <td  *ngFor="let c of columns;let i=index" [class.frozencol]="!i">{{r[c.prop]}}</td>
       </tr>
   </table>
</div>

 

js

public scroll(event){
        var x=document.getElementById('tablediv').scrollLeft;
        var y=document.getElementById('tablediv').scrollTop;
        console.log(x,y)
        //固定列
        //所有使用CSS類frozencol的td將被凍結,包括表頭的th
        var tds=document.getElementsByClassName('frozencol');
        for(var i=0;i<tds.length;i++){
            tds[i]['style']['left']=(x-1) + 'px';
        }
        //固定表頭
        // document.getElementById('tablediv').getElementsByTagName('tr')[0].style.top=y + 'px';
    }

 

css

.tableheader {
  position: relative;
  top: 0;
  z-index: 105;
}

.frozencol {
  position: relative;
  left: 0;
  background: #ddd;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM