Прокрутка содержимого таблиц является проблематичной проблемой, поскольку для этого нет простого и безопасного для браузера решения.
Лучший и самый безопасный способ сделать это требует JavaScript. Вы бы легко достигли даже горизонтальной прокрутки (это бесплатно) с помощью этой техники, которую я использовал. Вы можете легко преобразовать это в свою проблему:
1) Я сделал 3 таблицы
2) Поместил среднюю таблицу, в которой хранятся данные, внутри контейнера DIV
3) установить переполнение стиля DIV: авто
4) дал таблицу верхнего и нижнего колонтитула и div шириной 100%
.
5) окружил все другим div для контроля общей ширины таблицы
6) удостоверился, что количество столбцов во всех трех таблицах совпадает и что все три имеют одинаковые стили в отношении отступов, полей и границ
Теперь интересная часть:
6) под последним элементом этой конструкции таблицы напишите блок JavaScript (или включите его из файла)
7) написать функцию, которая последовательно просматривает каждый столбец (используйте цикл for), начиная с первого. На каждой итерации этого цикла проверяйте ячейку td с первыми двумя таблицами в текущем столбце. Проверьте, какой из них больше, и назначьте его стилю меньшей ячейки TD. Вы можете также применить это значение к таблице нижнего колонтитула.
8) вызвать эту функцию. Возможно, вы захотите сделать это через определенный промежуток времени или при возникновении особых событий, таких как новые данные в ячейках (например, при использовании ajax).
Примечание. При горизонтальной прокрутке размеры столбцов синхронизируются. Но вам придется синхронизировать позицию прокрутки таблицы верхнего и нижнего колонтитула с таблицей содержимого. В качестве альтернативы вы просто позволяете полному div прокручивать все по горизонтали, но не по вертикали. Это будет работа DIV, которая содержит таблицу данных.
Этот метод очень хорошо работал во всех основных браузерах в проекте с диаграммой Гопта очень коплекс.
Примечание. Вы можете легко представить себе эту концепцию с поворотом на 90 градусов, чтобы при прокрутке фиксировать первый и последний столбец заголовка.
Редактировать: Вот еще один пример из моей базы кода, который может помочь вам найти решение:
var left_td = document.getElementById("left_td");
var right_td = document.getElementById("right_td");
var contentDiv = document.getElementById("contentDiv");
window.setInterval(function(){
var left_td_width = Math.round((parseInt(contentDIV.offsetWidth) - 120) / 2);
var right_td_width = (parseInt(contentDIV.offsetWidth) - left_td_width - 120;
left_td.style.width = left_td_width + "px";
right_td.style.width = right_td_width + "px";
}, 25);
Этот код выполняет следующие действия: он гарантирует, что таблица с 3 столбцами всегда выглядит так: первый и последний столбцы имеют одинаковый размер, а центральный столбец имеет ширину 120 пикселей.
Конечно, это не относится непосредственно к вашей особой проблеме, но может дать вам отправную точку в динамическом манипулировании таблицами с помощью JavaScript.