ホームページ > ウェブフロントエンド > CSSチュートリアル > 純粋なCSSでテーブルヘッダーを修正するにはどうすればよいですか?テーブルヘッダ固定の実装

純粋なCSSでテーブルヘッダーを修正するにはどうすればよいですか?テーブルヘッダ固定の実装

青灯夜游
リリース: 2018-11-10 17:38:15
転載
3796 人が閲覧しました

この記事の内容は、純粋な CSS でテーブルヘッダーの固定を実現する方法を紹介することです。ヘッダー固定の実装。困っている友人は参考にしていただければ幸いです。

純粋な CSS でテーブル ヘッダーの固定を実現することが難しい理由は、主に次の 2 点によるものです。

1. 最大のシェアを誇る IE6 は、position:fixed をサポートしていません。 。

2. 人々はテーブルでこの効果を実現したいと考えています。

しかし、海外の人々は、驚くべき数の CSS ハックを使用して、純粋な CSS を使用してこの効果を実際に実現しています...コードが非常に理解しにくく、拡張するのが難しい場合は、次のようにした方がよいと思います。 JavaScriptを使用します。たまたま今日、私もそういうニーズに遭遇したのですが、視点を変えて考えてみると、なるほどと思いました。

CSS はパフォーマンスを担当し、HTML は構造を担当することがわかっています。同じ構造でもスタイルを変えると、まったく異なる印象を与えることがわかります。これは、人間の目は簡単に騙されることを示しています。したがって、p CSS が熱心に提唱された時代には、人々は常にページからテーブルを削除することを望み、p スパンを使用して「テーブル」を 1 つずつ作成していました。

この種のことはお勧めできませんが、テーブルで実行できることは、いくつかの組み合わせによって実行できることも示しています。逆に言うと、1台では無理なので2台で。

上の表はヘッダーをシミュレートし、下の表はスクロール バーのある部分をシミュレートします。次に進む前に、抽象的になりすぎずに、まずニーズを明確にしましょう。まず、テーブルは 4*9 で、各列の幅は 170 ピクセル、合計は 680 ピクセルです。幅には境界線が含まれていないことを忘れないでください。横の合計の長さは 701px です。

ログイン後にコピー
ログイン後にコピー
                                                                                                                                                                                                                                         
    
    
    
    
    
    
    
    
    

次に、このテーブルを 2 つに分割します。最初のテーブルはヘッダーで、2 番目のテーブルにはスクロール バーが必要です。これは、オーバーフロー スタイルを親要素に適用する必要があることを意味します。 pでコーティングされます。この p と最初のテーブルは同じ長さでなければなりません。

しかし、心配しないでください。それらの外側に p を置き、幅を 701px に設定し、これら 2 つのサブ要素の幅を 100% に設定します。テーブルのレンダリング効率を向上させるために、テーブルに tbody を明示的に追加していることに注意してください。

<p>
  </p>
ログイン後にコピー
                                                              
名称语法说明例子
  

    

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
Simple attribute Selector[attr] 选择具有此属性的元素blockquote[title] { 
color: red }
attribute Value Selector[attr="value"] 选出属性值精确等于给出值的元素h2[align="left"] { 
cursor: hand } 
"Begins-with" attribute Value Selector[attr^="value"] 选出属性值以给出值开头的元素h2[align^="right"] { 
cursor: hand } 
"Ends-with" attribute Value Selector[attr$="value"] 选出属性值以给出值结尾的元素p[class$="vml"]{
cursor: hand} 
Substring-match attribute Value Selector[attr*="value"] 选出属性值包含给出值的元素p[class*="grid"]{
 float:left} 
One-Of-Many Attribute Value Selector[attr~="value"] 原元素的属性值为多个单词,给出值为其中一个。li[class~="last"]{
 padding-left:2em} 
Hyphen Attribute Value Selector[attr|="value"] 原元素的属性值等于给出值,或者以给出值加“-”开头span[lang|="en"]{ 
color:green}
反选属性值选择器[attr!="value"] 非标准,jQuery中出现的span[class!="red"]{
color:green}
  

プレゼンテーション層部分:

#scrollTable {
  width:701px;
  border: 1px solid #EB8;/*table没有外围的border,只有内部的td或th有border*/
  background: #FF8C00;
}
 
 
#scrollTable table {
  border-collapse:collapse; /*统一设置两个table为细线表格*/
}
 
#scrollTable table.thead{ /*表头*/
  /*p的第一个子元素*/
  width:100%;
}
 
#scrollTable table.thead th{/*表头*/
  border: 1px solid #EB8;
  border-right:#C96;
  color:#fff;
  background: #FF8C00;/*亮桔黄色*/
}
 
#scrollTable p{/*能带滚动条的表身*/
  /*p的第二个子元素*/
  width:100%;
  height:200px;
  overflow:auto;/*必需*/
}
 
#scrollTable table.tbody{/*能带滚动条的表身的正体*/
  width:100%;
  border: 1px solid #C96;
  border-right:#B74;
  color:#666666;
  background: #ECE9D8;
}
#scrollTable table.tbody td{/*能带滚动条的表身的格子*/
  border:1px solid #C96;
}
ログイン後にコピー

実行コード:

nbsp;html>

  
    <meta>
    <title>纯CSS实现表头固定</title>
    <style>

      #scrollTable {
        width:701px;
        border: 1px solid #EB8;/*table没有外围的border,只有内部的td或th有border*/
        background: #FF8C00;
      }


      #scrollTable table {
        border-collapse:collapse; /*统一设置两个table为细线表格*/
      }

      #scrollTable table.thead{ /*表头*/
        /*p的第一个子元素*/
        width:100%;
      }

      #scrollTable table.thead th{/*表头*/
        border: 1px solid #EB8;
        border-right:#C96;
        color:#fff;
        background: #FF8C00;/*亮桔黄色*/
      }

      #scrollTable p{/*能带滚动条的表身*/
        /*p的第二个子元素*/
        width:100%;
        height:200px;
        overflow:auto;/*必需*/
      }

      #scrollTable table.tbody{/*能带滚动条的表身的正体*/
        width:100%;
        border: 1px solid #C96;
        border-right:#B74;
        color:#666666;
        background: #ECE9D8;
      }
      #scrollTable table.tbody td{/*能带滚动条的表身的格子*/
        border:1px solid #C96;
      }

    </style>
  
  
    <p>
      </p>
ログイン後にコピー
                                                                                                         
名称语法说明例子
      

        

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
Simple attribute Selector[attr] 选择具有此属性的元素blockquote[title] { 
color: red }
attribute Value Selector[attr="value"] 选出属性值精确等于给出值的元素h2[align="left"] { 
cursor: hand } 
"Begins-with" attribute Value Selector[attr^="value"] 选出属性值以给出值开头的元素h2[align^="right"] { 
cursor: hand } 
"Ends-with" attribute Value Selector[attr$="value"] 选出属性值以给出值结尾的元素p[class$="vml"]{
cursor: hand} 
Substring-match attribute Value Selector[attr*="value"] 选出属性值包含给出值的元素p[class*="grid"]{
 float:left} 
One-Of-Many Attribute Value Selector[attr~="value"] 原元素的属性值为多个单词,给出值为其中一个。li[class~="last"]{
 padding-left:2em} 
Hyphen Attribute Value Selector[attr|="value"] 原元素的属性值等于给出值,或者以给出值加“-”开头span[lang|="en"]{ 
color:green}
反选属性值选择器[attr!="value"] 非标准,jQuery中出现的span[class!="red"]{
color:green}
              

header 本文のグリッドが整列していません。このとき、col タグを使用する必要があります。col を使用すると、tbody の同じインデックス値で背景色、テキストの配置、td または th の幅を均一に設定できます。 CSS2.1 の隣接セレクターと CSS3 のサブ要素フィルタリング擬似クラスを使用すると、より合理的な方法でそれらを設定でき、スタイルと構造が分離されていますが、IE ファミリが常に後れを取っているのは残念です。最後のテーブルはスクロール バーによって押しつぶされて長さが短くなっている可能性があるため、最初の 3 つの列の長さが等しく、残りが最後のテーブルに割り当てられるようにするだけで済みます。つまり、最後のものは設定する必要はありません。さらに、IE ではスクロール バーのスタイルを設定できるので、いろいろ試してみましょう。

ログイン後にコピー
ログイン後にコピー
                   //********************略*****************           
 

      

                       //********************略*****************                      
 

プレゼンテーション層部分:

#scrollTable {
  width:701px;
  border: 1px solid #EB8;/*table没有外围的border,只有内部的td或th有border*/
  background: #FF8C00;
}
 
#scrollTable table {
  border-collapse:collapse; /*统一设置两个table为细线表格*/
}
/*表头 p的第一个子元素**/
#scrollTable table.thead{ 
  width:100%;
}
/*表头*/
#scrollTable table.thead th{
  border: 1px solid #EB8;
  border-right:#C96;
  color:#fff;
  background: #FF8C00;/*亮桔黄色*/
}
/*能带滚动条的表身*/
/*p的第二个子元素*/
#scrollTable p{
  width:100%;
  height:200px;
  overflow:auto;/*必需*/
  scrollbar-face-color:#EB8;/*那三个小矩形的背景色*/
  scrollbar-base-color:#ece9d8;/*那三个小矩形的前景色*/
  scrollbar-arrow-color:#FF8C00;/*上下按钮里三角箭头的颜色*/
  scrollbar-track-color:#ece9d8;/*滚动条的那个活动块所在的矩形的背景色*/
  scrollbar-highlight-color:#800040;/*那三个小矩形左上padding的颜色*/
  scrollbar-shadow-color:#800040;/*那三个小矩形右下padding的颜色*/
  scrollbar-3dlight-color: #EB8;/*那三个小矩形左上border的颜色*/
  scrollbar-darkshadow-Color:#EB8;/*那三个小矩形右下border的颜色*/
}
/*能带滚动条的表身的正体*/
#scrollTable table.tbody{
  width:100%;
  border: 1px solid #C96;
  border-right:#B74;
  color:#666666;
  background: #ECE9D8;
}
/*能带滚动条的表身的格子*/
#scrollTable table.tbody td{
  border:1px solid #C96;
}
ログイン後にコピー

実行コード:

nbsp;html>

  
    <meta>
    <title>纯CSS实现表头固定 </title>
    <style>

      #scrollTable {
        width:701px;
        border: 1px solid #EB8;/*table没有外围的border,只有内部的td或th有border*/
        background: #FF8C00;
      }

      #scrollTable table {
        border-collapse:collapse; /*统一设置两个table为细线表格*/
      }
      /*表头 p的第一个子元素**/
      #scrollTable table.thead{ 
        width:100%;
      }
      /*表头*/
      #scrollTable table.thead th{
        border: 1px solid #EB8;
        border-right:#C96;
        color:#fff;
        background: #FF8C00;/*亮桔黄色*/
      }
      /*能带滚动条的表身*/
      /*p的第二个子元素*/
      #scrollTable p{
        width:100%;
        height:200px;
        overflow:auto;/*必需*/
        scrollbar-face-color:#EB8;/*那三个小矩形的背景色*/
        scrollbar-base-color:#ece9d8;/*那三个小矩形的前景色*/
        scrollbar-arrow-color:#FF8C00;/*上下按钮里三角箭头的颜色*/
        scrollbar-track-color:#ece9d8;/*滚动条的那个活动块所在的矩形的背景色*/
        scrollbar-highlight-color:#800040;/*那三个小矩形左上padding的颜色*/
        scrollbar-shadow-color:#800040;/*那三个小矩形右下padding的颜色*/
        scrollbar-3dlight-color: #EB8;/*那三个小矩形左上border的颜色*/
        scrollbar-darkshadow-Color:#EB8;/*那三个小矩形右下border的颜色*/
      }
      /*能带滚动条的表身的正体*/
      #scrollTable table.tbody{
        width:100%;
        border: 1px solid #C96;
        border-right:#B74;
        color:#666666;
        background: #ECE9D8;
      }
      /*能带滚动条的表身的格子*/
      #scrollTable table.tbody td{
        border:1px solid #C96;
      }

    </style>
  
  
    <p>
      </p>
ログイン後にコピー
                                                                                                            
名称语法说明例子
      

        

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
Simple attribute Selector[attr] 选择具有此属性的元素blockquote[title] { 
color: red }
attribute Value Selector[attr="value"] 选出属性值精确等于给出值的元素h2[align="left"] { 
cursor: hand } 
"Begins-with" attribute Value Selector[attr^="value"] 选出属性值以给出值开头的元素h2[align^="right"] { 
cursor: hand } 
"Ends-with" attribute Value Selector[attr$="value"] 选出属性值以给出值结尾的元素p[class$="vml"]{
cursor: hand} 
Substring-match attribute Value Selector[attr*="value"] 选出属性值包含给出值的元素p[class*="grid"]{
 float:left} 
One-Of-Many Attribute Value Selector[attr~="value"] 原元素的属性值为多个单词,给出值为其中一个。li[class~="last"]{
 padding-left:2em} 
Hyphen Attribute Value Selector[attr|="value"] 原元素的属性值等于给出值,或者以给出值加“-”开头span[lang|="en"]{ 
color:green}
反选属性值选择器[attr!="value"] 非标准,jQuery中出现的span[class!="red"]{
color:green}
              

純粋なCSSでテーブルヘッダーを修正するにはどうすればよいですか?テーブルヘッダ固定の実装


以上が純粋なCSSでテーブルヘッダーを修正するにはどうすればよいですか?テーブルヘッダ固定の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
css
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート