Я закончил обратным инжинирингом того, как Google выполняет верхний заголовок. Они создавали копию всей таблицы, помещали ее в div, позиционировали абсолютно и устанавливали высоту, равную высоте первого ряда. Это приводит к тому, что при прокрутке вниз по основному столу он остается зафиксированным сверху.
Боковая прокрутка более сложна, потому что при боковой прокрутке им нужен также заголовок для прокрутки. У CSS нет механизма для этого (поскольку он абсолютно расположен вне прокрутки), поэтому Google использует здесь javascript.
Чтобы эмулировать это поведение для фиксированного столбца, мы сначала делаем третий клон таблицы. Затем мы пройдемся по CSS-гимнастике, чтобы получить правильную ширину / высоту и положение. Наконец, мы присоединяем слушателя к событию onScroll главной таблицы, которое прокручивает таблицу заголовков в унисон. Функция $ .schollbarWidth () взята из этого плагина .
visualization = new google.visualization.Table(document.getElementById('table'));
visualization.draw(data);
var fullTable = $('#table > div > div:first');
var yHeader = fullTable.clone().insertAfter(fullTable);
yHeader.css('width', yHeader.children('tr td:first').outerWidth())
.css('height', fullTable.innerHeight() - $.scrollbarWidth())
.css('position', 'absolute')
.css('top', '0px')
.css('left', '0px')
.css('overflow', 'hidden')
fullTable.scroll(function() {
yHeader.scrollTop(fullTable.scrollTop());
});