1. 程式人生 > 程式設計 >Angular8 實現table表格表頭固定效果

Angular8 實現table表格表頭固定效果

最近專案中有個需求,表頭固定,內部實現滾動條。除了單個表頭,還有多個表頭的情況(下一篇中介紹)。

效果圖:

表頭固定

html 結構

HTML結構

按區域劃分可以分為三個大部分,一共是通過4個table 組合成一個整體的table。
然後通過 col 屬性去設定列的寬度,注意:這裡的寬度必須要設定為固定值。
表頭過濾功能暫時未實現。

切割分析

水平滾動效果與垂直滾動效果

監聽主體table(淺綠色部分)滾動事件,同步上下滾動頭部的table (深綠色部分)和 左右滾動左側固定的table(紅色部分中的紫色部分)

程式碼 1

 $(this.tableContent.nativeElement).on('scroll',(e) => {
   $(this.fixedRowWrapper.nativeElement).prop('scrollTop',$(this.tableContent.nativeElement).prop('scrollTop'));
   //方式一 :設定頭部固定列table 的滾動條,需要配合less 樣式隱藏滾動條(如果不考慮ie9的相容性,可以使用。less樣式參考程式碼2)
   // $(this.tableHeader.nativeElement).prop('scrollLeft',$(this.tableContent.nativeElement).prop('scrollLeft'))
   // 方式二:設定頭部固定列table 的margin-left 屬性為負值,間接實現了頭部固定的列同步向左滾動效果,相容ie9
   $(this.tableHeader.nativeElement).css({ marginLeft: `${-$(this.tableContent.nativeElement).prop('scrollLeft')}px` })
  })

程式碼 2

 .ngx-table__header-inner {
      // 隱藏滾動條,頁面div 保持橫向滾動,但是不支援ie9 ,為了相容性所以沒有使用,ts 中同步滾動
      // 而是動態設定 ngx-table__header-inner 的margin-left 實現滾動效果
      overflow: -moz-scrollbars-none;
      overflow-x: auto;
     -ms-overflow-style: none;

      &::-webkit-scrollbar {
       width: 0 !important;
       display: none;
     }
    }

完整程式碼地址

github專案地址,需要的可以點選訪問 https://github.com/zjinger/ngx-TPR/tree/master/src/app/components/scroll-table

總結

以上所述是小編給大家介紹的Angular8 實現table表格表頭固定效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!