首頁  >  文章  >  web前端  >  JS實作table表格固定表頭且表頭隨橫向捲動而捲動詳解

JS實作table表格固定表頭且表頭隨橫向捲動而捲動詳解

小云云
小云云原創
2018-05-23 14:01:254376瀏覽

本文主要介紹了JS實作table表格固定表頭且表頭可以隨橫向滾動而滾動,需要的朋友可以參考下,希望能幫助到大家。

先看一張效果圖

JS實作table表格固定表頭且表頭隨橫向捲動而捲動詳解

想法:

1、頭部用一個table並用一個p包裹著, 表格的具體內容用一個table

2、頭部外面的p用positon: relative相對定位

3、獲取整個表格的高度

4 、取得表格的dom(或包裹著表格的dom)距離頁面頂部的距離offsetTop

5、滾動的零界點的距離表格的高度+表格距離頁面頂部的距離如果滾動超過這個就讓頭部的top值歸0或原封不動

JS實作table表格固定表頭且表頭隨橫向捲動而捲動詳解

當然還有很多可以優化的地方我只是展示一個小思路嘿嘿嘿

題外話為啥用紅色表頭因為顯眼哇哈哈

JS代碼

/**
     * 最重要的一点是头和身体是两个table 然后定位用relative 然后通过滚动来计算
     * */
      function FixedHead (){
        if( !(this instanceof FixedHead) ){
          return new FixedHead()
        };
        this.$dom = $('.dataTables_scrollHead'); // 表头外层dom
        this.offsetTop = this.$dom.offset().top; // 表头外层dom距离顶部的高度
        this.parents = this.$dom.parents('.dataTables_scroll'); // 表头外层dom最外面的盒子(包裹着table的盒子)
        this.outBoxHeight = this.parents.height(); // 表头外层dom最外面的盒子(包裹着table的盒子)的高度
        this.maxHeight = this.offsetTop + this.outBoxHeight; // 滚动的零界点 最多能滚动到哪里
        this.scroll();
      }
      FixedHead.prototype = {
        constructor: FixedHead,
        scroll: function(){
          var that = this;
          $(window).scroll(function(){
            var scrollTop = $(this).scrollTop();
            if((scrollTop > that.offsetTop) && (scrollTop < that.maxHeight)){
              that.$dom.css(&#39;top&#39;, (scrollTop - that.offsetTop + 50)+&#39;px&#39;) // 这个50是因为我的头部导航固定在顶部 高是50 所以要加上
            }else {
              var topCss = that.$dom.css(&#39;top&#39;);
              if(topCss === &#39;0px&#39; || topCss === &#39;auto&#39;){
              }else {
                that.$dom.css(&#39;top&#39;, &#39;0px&#39;)
              }
            }
          })
        }
      }

相關推薦:

jquery如何操作table表格各種方式實例匯總

html5中實現table表格中的斜線表頭效果的5種做法

html中table表格的內容水平和垂直居中顯示實例代碼

以上是JS實作table表格固定表頭且表頭隨橫向捲動而捲動詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn