ホームページ  >  記事  >  ウェブフロントエンド  >  テーブルヘッダーの固定とテーブルヘッダーの横スクロールのJS実装を詳しく解説

テーブルヘッダーの固定とテーブルヘッダーの横スクロールのJS実装を詳しく解説

小云云
小云云オリジナル
2018-05-23 14:01:254321ブラウズ

この記事は主に固定テーブルヘッダーを実装するためのJSを紹介しており、ヘッダーは横スクロール可能です。必要な方は参考にしていただければ幸いです。

まずレンダリングを見てみましょう

テーブルヘッダーの固定とテーブルヘッダーの横スクロールのJS実装を詳しく解説

アイデア:

1. テーブルの特定の内容にテーブルを使用します

2.ヘッドの外側の p の場合: 相対相対位置決め

3. テーブル全体の高さを取得します

4. テーブルの dom (またはテーブルを囲む dom) とページの上部の間の距離を取得します offsetTop

5. スクロールのゼロ境界点からの表の高さ + スクロールがこれを超えると、ヘッダーの上部の値は 0 に戻るか、変更されません。

テーブルヘッダーの固定とテーブルヘッダーの横スクロールのJS実装を詳しく解説

もちろん、最適化できる場所はたくさんありますが、目立つので赤いヘッダーを使用します

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方法テーブルを操作するためのさまざまな方法のまとめ

HTML5 のテーブルテーブルにスラッシュヘッダー効果を実装する方法 5 つの方法

HTML でテーブルコンテンツを水平方向および垂直方向に中央揃えにするサンプルコード

以上がテーブルヘッダーの固定とテーブルヘッダーの横スクロールのJS実装を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。