Я решил проблему, обернув position:sticky
div
в другой div
, высота которого устанавливается с помощью javascript, равной высоте родительского элемента td
.
<table>
<tr>
<td valign = "top">
<div style="height:1000px; width:100px; border:1px solid red;"></div>
</td>
<td id="td" valign = "top">
<div id="wrap">
<div style="height:10px; width:100px; border:1px solid black; position:sticky; position: -webkit-sticky; top:10px; "></div>
</div>
</td>
</tr>
$('#wrap').height( $('#td').height() );
Пример: https://jsfiddle.net/mqvpb1r5/