tableの中でスクロールさせる部分と固定させる部分を分けるときにCSSでposition: stickyを指定するというのを調べていたという記事の続き,
上を固定してみた。
どのHTML / CSSの参考サイトも指定のtdかth要素をstickyにするか,absoluteにするかでスクロールに対して止めていた。
参考を見ながら試してみたコードはセルだけが固定された。
また試しのコードを作ってみた。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, user-scalable=yes">
<style>
html {
  height:100%;
}
body {
  height: 100%;
  margin: 0;
  padding:0;
  height: 100%;
}
#wrapper {
  overflow: scroll;
  width: 100%;
  height:100%;
}
#wrapper2 {
  position:absolute;
  top:0;
  left:0;
  overflow: hidden;
  width: 373px;
  height: 97.5vh;
  z-index:4;
}
#wrapper3 {
  position:absolute;
  top:0;
  left:0;
  overflow: hidden;
  width: 97.5vw;
  height: 34px;
  z-index:4;
}
table {
  table-layout;fixed;
  border-collapse: collapse;
}
thead th {
  background-color: #4a4aff;
  color: white;
  width: 300px;
  height: 10px;
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 1;
  box-sizing: border-box;
  border:1px solid white;
}
thead {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 2;
}
thead th.blank {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  left: 0;
  z-index: 3;
}
td {
  text-align: center;
  box-sizing: border-box;
  background-color: #efefff;
  width: 300px;
  height: 70px;
  border: 1px solid black;
}
tr:nth-of-type(2n+1) td {
  background-color: #ffffff;
}
td:nth-of-type(1) {
  position: sticky;
  left:0px;
}
th:nth-of-type(1) {
  position: sticky;
  left:0px;
  z-index:3;
}
td:nth-of-type(2) {
  position: sticky;
  left:122px;
}
th:nth-of-type(2) {
  position: sticky;
  left:122px;
  z-index:3;
}
td:nth-of-type(3) {
  position: sticky;
  left:244px;
}
th:nth-of-type(3) {
  position: sticky;
  left:244px;
  z-index:3;
}
tr {
  height:20px;
}
.fixed {
  position: fixed;
}
.header {
  width:120px;
  height:30px;
}
</style>
</head>
<body>
<div id="wrapper">
<table>
<colgroup span="3" style="border-right:2px solid black;">
<colgroup span="7">
<thead>
<tr><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th></tr>
</thead>
<tbody>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
</tbody>
</table>
</div>
<div id="wrapper2">
<table>
<colgroup span="3" style="border-right:2px solid black;">
<colgroup span="7">
<thead>
<tr><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th></tr>
</thead>
<tbody>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
</tbody>
</table>
</div>
<div id="wrapper3">
<table>
<colgroup span="3" style="border-right:2px solid black;">
<colgroup span="7">
<thead>
<tr><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th><th><div class="header">TEST</div></th></tr>
</thead>
<tbody>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
</tbody>
</table>
</div>
</body>
</html>
オーバーレイ表示をすることで確かにヘッダだけ固定された。
コラムが今度は固定を追加した。
そして,スクロールバーのサイズは固定とみなしている。100%いっぱいに広げてしまうとスクロールバーが隠れてしまう。
せっかくとあるJavaScriptフレームワークの学習を始めたのにjqueryでグリグリいじりまくるコーディングに逆戻り…
やっぱりjQueryが手放せない。
jqueryでスクロールイベントに合わせてコラムだけを表示している側をスクロールする対応が必要

 
        
