CSS position: sticky

https://q-az.net/position-sticky/
「スクロールでその位置まで来たらそれ以降は fixed する」みたいな感じ。
よく広告がスクロールしても付いてくるやつがあるが、その動きがまさにstickyである。
最終的にどこまで固定されて要素がついてくるかは「sticky がかかった要素の親の端」まで。

一番単純な使い方

<html>
<body>
scroll 1<br>
scroll 1<br>
scroll 1<br>
scroll 1<br>
scroll 1<br>
<div>
  <div style="position:sticky; top:0px; background-color:yellow;">このdiv要素が終わるまで、一番上に付いてくる要素</div>
  scroll 2<br>
  scroll 2<br>
  scroll 2<br>
  scroll 2<br>
  scroll 2<br>
</div>
scroll 3<br>
scroll 3<br>
scroll 3<br>
scroll 3<br>
scroll 3<br>

テーブルヘッダを固定

<html>
<style>
table tr:first-child th {
	background-color:red;
	position: sticky;
	top:0px;
	z-index: 1;
}
table th {
	background-color:green;
	position: sticky;
	left:0px;
}
</style>
<body>
<div style="width:500; height:200px; overflow:scroll;">
<table border=1>
  <tr><th>head</th><th>head</th><th>head</th></tr>
  <tr><th>head</th><td>data<br>data<br>data<br>data<br></td><td>datadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadata</td></tr>
  <tr><th>head</th><td>data<br>data<br>data<br>data<br></td><td>datadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadata</td></tr>
  <tr><th>head</th><td>data<br>data<br>data<br>data<br></td><td>datadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadata</td></tr>
</table>
</div>