1

この固定ヘッダー テーブルを作成するための鍵となるスタイルを指摘してくれる人はいますか? これは私が役に立つとわかった唯一の例ですが、これを実現する最も重要なスタイルはどれかわかりません。

また、これを実現するために th td に DIV とパディングが必要なのはなぜですか?

<section class="">
  <div class="container">
    <table>
      <thead>
        <tr class="header">
          <th>
            Table attribute name
            <div>Table attribute name</div>
          </th>
          <th>
            Value
            <div>Value</div>
          </th>
          <th>
            Description
            <div>Description</div>
          </th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>align</td>
          <td>left, center, right</td>
          <td>Not supported in HTML5. Deprecated in HTML 4.01. Specifies the alignment of a table according to surrounding text</td>
        </tr>
        <tr>
          <td>bgcolor</td>
          <td>rgb(x,x,x), #xxxxxx, colorname</td>
          <td>Not supported in HTML5. Deprecated in HTML 4.01. Specifies the background color for a table</td>
        </tr>
        <tr>
          <td>border</td>
          <td>1,""</td>
          <td>Specifies whether the table cells should have borders or not</td>
        </tr>
        <tr>
          <td>cellpadding</td>
          <td>pixels</td>
          <td>Not supported in HTML5. Specifies the space between the cell wall and the cell content</td>
        </tr>
        <tr>
          <td>cellspacing</td>
          <td>pixels</td>
          <td>Not supported in HTML5. Specifies the space between cells</td>
        </tr>
        <tr>
          <td>frame</td>
          <td>void, above, below, hsides, lhs, rhs, vsides, box, border</td>
          <td>Not supported in HTML5. Specifies which parts of the outside borders that should be visible</td>
        </tr>
        <tr>
          <td>rules</td>
          <td>none, groups, rows, cols, all</td>
          <td>Not supported in HTML5. Specifies which parts of the inside borders that should be visible</td>
        </tr>
        <tr>
          <td>summary</td>
          <td>text</td>
          <td>Not supported in HTML5. Specifies a summary of the content of a table</td>
        </tr>
        <tr>
          <td>width</td>
          <td>pixels, %</td>
          <td>Not supported in HTML5. Specifies the width of a table</td>
        </tr>
      </tbody>
    </table>
  </div>
</section>


<style>
    html, body{
      margin:0;
      padding:0;
      height:100%;
    }
    section {
      position: relative;
      border: 1px solid #000;
      padding-top: 37px;
      background: #500;
    }
    section.positioned {
      position: absolute;
      top:100px;
      left:100px;
      width:800px;
      box-shadow: 0 0 15px #333;
    }
    .container {
      overflow-y: auto;
      height: 200px;
    }
    table {
      border-spacing: 0;
      width:100%;
    }
    td + td {
      border-left:1px solid #eee;
    }
    td, th {
      border-bottom:1px solid #eee;
      background: #ddd;
      color: #000;
      padding: 10px 25px;
    }
    th {
      height: 0;
      line-height: 0;
      padding-top: 0;
      padding-bottom: 0;
      color: transparent;
      border: none;
      white-space: nowrap;
    }
    th div{
      position: absolute;
      background: transparent;
      color: #fff;
      padding: 9px 25px;
      top: 0;
      margin-left: -25px;
      line-height: normal;
      border-left: 1px solid #800;
    }
    th:first-child div{
      border: none;
    }
</style>
4

1 に答える 1

1

あなたの質問は少し漠然としています。position: fixed投稿したコードには、要素でを使用しているため、固定ヘッダーがありません。そのコードは基本的に、データを含む通常の古いテーブルです。「トリッキーな」部分は、ユーザーが既存のヘッダーセクションの上に新しいヘッダーセクションを作成するtheadことです。これが、このようなコードが表示される理由です

<th>
     Table attribute name
     <div>Table attribute name</div>
</th>

テーブル属性名」 テキストが で非表示にth {color: transparent;}なり、 内のテキストがdivその場所に表示されます。

それについては、div class="container"次を使用してスクロール可能なコンテナーを作成します。

.container {
    overflow-y: auto;
    height: 200px;
}

ユーザーがtableanddivコンボを使用しているのは、ヘッダーの下にスクロール可能なデータがあり、すべてが適切に配置されるためだと思います。

テーブルを使用せずにこのコードの実際の単純化されたバージョンが必要な場合は、これを使用できます。

HTML

<div class="wrap">
    <div class="top">Title here</div>
    <div class="scroll">
        <div class="text">All your base are belong to us</div>
    </div>
</div>

CSS

 html, body{
      margin:0;
      padding:0;
      height:100%;
}
.wrap {
    margin: 0 auto;
    width: 600px;
}
.top {
    border: 1px solid red;
    background: lightgray;
    line-height: 50px;
    text-align: center;
}
.scroll {
    background: pink;
    height: 200px;
    overflow-y: auto;
}
.text {
    height: 1000px;
}

JS.Fiddleを試してみたい場合は、こちらをご覧ください。それが役立つことを願っています。

于 2015-09-03T00:57:12.300 に答える