読者です 読者をやめる 読者になる 読者になる

table の tbody スクロール

table tbody をスクロールさせるのに、わざわざ jQuery を使ったり、
高機能な Handson table を紹介したのが、非常に恥ずかしい。


tbody のスタイルに、 overflow-y: scroll; を書いた時に、thead で書いたヘッダ列と、列の線がずれてしまうのをどうしたらいいか
解らなくて上の2通りを使用したが、
よくよく、調べれば、display: block; と、nth-child(n) -->> n 番目
を上手く使えば、CSSだけでなんとかなる。

(例)/* css を以下の様に記述 */
table.scdata{
   border-collapse: collapse;
   border-spacing: 0;
   white-space: nowrap;
   display: block;
}
.scdata th{ background-color: #c8ffd0; }
.scdata td, .scdata th{
   border: 1px #000000 solid;
   padding: 2px 16px 2px 10px; /* 上、右、下、左 */
   font-size: 18px;
}
.scdata tbody {
   border-bottom: 1px #000000 solid;
   height: 190px;
   display: inline-block;
   overflow-y: scroll;
}

.scdata th:nth-child(1){ width:  60px; }
.scdata th:nth-child(2){ width: 100px; }
.scdata th:nth-child(3){ width: 400px; }
/* th と td 、 width を揃える。 */
.scdata td:nth-child(1){ width:  60px; text-align: right; }
.scdata td:nth-child(2){ width: 100px; }
.scdata td:nth-child(3){ width: 400px; }

===== HTML table の記述 ======
<table class="scdata">
   <thead>
      <tr>
         <th>ID</th><th>Time</th><th>Description</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>1</td><td>11:22:45</td><td>ABCDEFGHIJKLMNOPQRTUVWXYZ</td>
      </tr>
      <tr>
         <td>2</td><td>11:22:45</td><td>ABCDEFGHIJKLMNOPQRTUVWXYZ</td>
      </tr>
      <tr>
         <td>3</td><td>11:22:45</td><td>ABCDEFGHIJKLMNOPQRTUVWXYZ</td>
      </tr>
           :
           :
   </tbody>
</table>


画面のキャプチャでこれは、スクロールしないが次のように表示される。

f:id:posturan:20160313190616j:plain