Page MenuHomePhabricator

Implement repeated/fixed/floating table headers
Open, LowPublic


With longer tables it can be very difficult to identify the columns. It might be nice if table headers stayed in view when scrolling trough a long table.

This could be done with JS, but would need to be compatible with tablesorter of course.

Thinking about 'fixed' position headers once the header moves out of the screen viewport. Can possibly do similar stuff with footers.

Version: 1.21.x
Severity: enhancement
See Also: T12013: Implement client-side filtering of tables using javascript



Event Timeline

bzimport raised the priority of this task from to Low.Nov 22 2014, 1:00 AM
bzimport set Reference to bz40763.
bzimport added a subscriber: Unknown Object (MLST).
TheDJ created this task.Oct 4 2012, 10:37 AM
brion added a comment.Oct 4 2012, 6:09 PM

Adding 'floating' and 'fixed' to summary to clarify how we'd probably want to implement such things by dynamically switching them to position:fixed rather than actually repeating.

Qgil added a comment.Mar 7 2013, 4:36 PM

Moving to the Parser component. I hope this is the right place.

PS: part of

TheDJ added a comment.Jul 6 2013, 3:09 PM

Moving to the right component. You need javascript to dynamically switch the styling of a table header like this.

TheDJ added a comment.Jul 6 2013, 11:21 PM


are some of the nicest implementations i have seen so far. both require cloning the headers, which is currently not possible with sortable tables.

I think that if we would want to do this, we should split of the thead and tableheader normalization of tablesorter into it's own module and reuse that for fixed headers.

  • Bug 53358 has been marked as a duplicate of this bug. ***
He7d3r updated the task description. (Show Details)Feb 22 2015, 10:13 PM
He7d3r set Security to None.
Fito added a subscriber: Fito.Sep 7 2015, 7:16 AM
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptSep 7 2015, 7:16 AM
Krinkle removed a subscriber: Krinkle.Aug 30 2016, 12:42 AM
Elitre added a subscriber: Elitre.Jan 24 2018, 5:19 PM
orschiro removed a subscriber: orschiro.May 22 2019, 6:40 PM
orschiro added a subscriber: orschiro.
Sdkb raised the priority of this task from Low to Medium.EditedApr 22 2020, 12:30 AM
Sdkb added a subscriber: Sdkb.
Aklapper lowered the priority of this task from Medium to Low.Apr 22 2020, 8:49 AM

@Sdkb: No updates, otherwise they would be in this task. :) Do you plan to work on fixing this task, as you increased the priority of this task? If so, please set yourself as assignee - thanks!

Qgil removed a subscriber: Qgil.Apr 27 2020, 10:34 AM
XanonymusX added a comment.EditedAug 2 2020, 9:09 PM

Today I found the class mw-sticky-header being automatically applied to some tables on enwiki. As far as I can see, it only works in Safari and only on desktop. Does somebody know more about this?

EDIT: Oh, I could have just read the thread again, my bad. So it's TheDJ's gadget from 2017. But how come i only see this now? I have not changed my preferences recently.

This is possible in pure CSS these days with minimal dodginess; see for example the .floatable-header CSS at and an example usage at

Quiddity added a subscriber: Quiddity.
Sdkb added a comment.Nov 16 2020, 9:29 PM

FYI, this task recently came up at the Village Pump, showing continuing interest.

Anyone interested feel free to work on a patch, please: - thanks in advance!

I just noticed that apparently the tables with sticky headers I created on dewiki don’t work anymore if I activate the new Vector skin! How can the skin interfere with this effect? Noticed this on Chrome.

@XanonymusX: Please always provide links to test cases so other people could try to reproduce without having to somehow search for pages first. Thanks.

My question was whether there was a known interference of the new vector with position:fixed in table headers, not about a specific case.

Anyway, random example (taken from the Community Wishlist): most tables here have sticky headers. Works fine in old Vector and in all up-to-date browsers. With new vector position:fixed apparently is completely ignored (at least in Chrome).