That’s when you add position: sticky to the relevant row. Search for “sticky table header” for the proper CSS incantation.
Update: I remember now: The rows were drawn on top of the header. Their background must have been transparent or something.
Now you all must be right: This must have been fixable somehow. Now the application contains 10+ years of CSS evolution, maintained by at least 4 predecessors and a bunch of quick and dirty maintenance hacks. It's a huge tower of exceptions built on exceptions . I had already blow way past my time budget for something I had estimated easy, and creating a table wasn't even the core of the job. So I cut my losses.