Дополнительно
Заголовки таблиц HTML всегда видны в верхней части окна при просмотре большой таблицы
Я хотел бы иметь возможность "подстроить" представление HTML-таблицы, чтобы добавить одну особенность: при прокрутке страницы вниз так, чтобы таблица была на экране, но строки заголовков были вне экрана, я хотел бы, чтобы заголовки оставались видимыми в верхней части области просмотра.
Концептуально это было бы похоже на функцию "замораживания панелей" в Excel. Однако HTML-страница может содержать несколько таблиц, и я хочу, чтобы это происходило только для той таблицы, которая в данный момент находится в поле зрения, только пока она находится в поле зрения.
Примечание: я видел одно решение, в котором область данных таблицы сделана прокручиваемой, а заголовки не прокручиваются. Это не то решение, которое я ищу.
167
11
Я'ве сделали доказательство концепции решения, используя библиотеку jQuery.
Образец зрения.
Я'теперь ве получил этот код в Меркуриал репозиторий системе Bitbucket. Основной файл
tables.html
.Я'м курсе одна проблема с этим: если таблица содержит якорей, и если вы открываете URL-адрес с указанным якорь в браузере, при загрузке страницы, строка с якорем, вероятно, будет закрыт плавающего заголовка.
Обновление 2017-12-11: я вижу, что это не't работа с текущей версии Firefox (57) и хром (63). Не знаю, когда и почему это перестало работать, или как исправить ее. Но теперь, я думаю, что принято отвечать на Irawan Хенди выше.
Крейг, я улучшил ваш код немного (среди нескольких других вещей, это's теперь, используя установки:фиксированной) и завернула его как плагин jQuery.
Попробовать это здесь: http://jsfiddle.net/jmosbech/stFcx/
И вот вам источник: https://github.com/jmosbech/StickyTableHeaders
Проверить для jQuery.floatThead (демо доступно) и это очень круто, можно работать с таблицами]2, и может работать даже внутри `переполнение: авто-футовый контейнер.
Если вы're пристреливая современные CSS3 с совместимыми браузерами (поддержка браузера: https://caniuse.com/#feat=css-sticky) можно использовать положение:липкий, который не'т требует JS и выиграл'т сломать сервировки стола Мисс-выравнивая Th и TD в одной колонке. И не требует ширина фиксированного столбца, чтобы работать должным образом.
Пример для одной строки заголовка:
Для theads с 1 или 2 строки, вы можете использовать что-то вроде этого:
Возможно, вам придется поиграть немного с топ собственность последнего ребенка, изменяя количество пикселей, чтобы соответствовать высоте первого ряда (+ маржа + границы + прокладки, если таковые имеются), так что второй ряд палочек просто вниз ниже первого.
Также оба решения работают, даже если у вас есть более одной таблицы на этой же странице: в
й
элементом каждого начинает быть липкой, когда свои лидирующие позиции является сумма, указанная в CSS определение и исчезает, когда все прокрутке таблицы вниз. Так что если есть несколько таблиц, все работает красиво одинаково.Зачем использовать последний ребенок до и детьми после в CSS?
Потому что правила CSS будут отображаться браузером в том же порядке, как вы записали их в CSS-файл и из-за этого, если у вас есть только 1 строку на элементы thead элемент первого ряда-это одновременно и последней строки и первого ребенка нужно переопределить последний ребенок. Если не вы будете иметь смещение строки на 30 пикселей от верхнего поля, который я предполагаю, что вы Дон'т хотите.
Известной проблемой установки: липкое, что он не't работа на потока элементов или строк таблицы: следует ориентироваться на элементы Th. Скока эта проблема будет решена в будущих версиях браузера.
Я'столкнулся с этой проблемой совсем недавно. К сожалению, мне пришлось сделать 2 таблицы, одну для заголовка и одну для тела. Возможно, это не самый лучший подход, но вот так:
Это сработало для меня, возможно, это не самый элегантный способ, но он работает. Я буду исследовать, чтобы увидеть, могу ли я сделать что-то лучше, но это позволяет использовать несколько таблиц.
Почитайте на overflow propriety, чтобы понять, подходит ли это для ваших нужд.
Возможны варианты
ПЛ-с плавающей таблица-заголовки
Яш-с плавающей таблица-заголовки (код Google)
В Друпал
У меня есть сайт на Drupal 6. Я был на админке, что "модули" на странице, и заметил, что на столах было это точная характеристика!
Глядя на код, кажется, быть реализованы файл с названием
tableheader.js
. Она применяет функцию на все таблицы с классом `липкие включена.Для сайта на Друпале, я'd как, чтобы иметь возможность воспользоваться этим
tableheader.js
модуль как есть для пользовательского контента.tableheader.js
Не'т, кажется, чтобы присутствовать на веб-страницах пользователей в Drupal. Я разместил форум, чтобы спросить, как изменить тему для Drupal, так это's доступный. По данным ответом,tableheader.js могут быть добавлены в темы Drupal с помощью drupal_add_js () на тему'ы
template.php` следующим образом:Это действительно сложная вещь, чтобы иметь липкий заголовок на вашем столе. У меня же требование, но с в ASP:GridView С а потом я нашел это на самом деле полагают, липкий заголовок таблицы. Существует много решений, и это заняло у меня 3 дня все решения, но никто из них не мог удовлетворить.
Главная проблема, что я столкнулся с большинством из этих решений была проблема выравнивания. Когда вы пытаетесь сделать заголовке плавающей, то выравнивание заголовка ячейки и клетки тела уходит в другое русло.
С некоторыми решениями у меня есть проблема получения заголовка наложились на первые несколько строк из тела, которые вызывают строк тела становятся скрыты за плавающего заголовка.
Так что теперь я должен был реализовать свою собственную логику, чтобы достигнуть этого, хотя я и не считаю это идеальным решением, но это также может быть полезным для кого-то,
Ниже приведен пример таблицы.
Примечание: таблица обернут в DIV с атрибутом Class равным 'стол-держатель'.
Ниже приведен скрипт jQuery, который я добавил в мой заголовок HTML-страницы.
и, наконец, ниже находится класс CSS для целей окрашивания.
Так что вся идея этой логике, чтобы поместить таблицу на таблицу держателя div и создать клон, что держатель на клиентской стороне, когда страница загружается. Теперь спрячьте тело таблицы внутри держателя клонировать и поместите оставшуюся часть заголовка в исходный заголовок.
Же решение работает для ASP:GridView для работы, нужно добавить еще два шага, чтобы достичь этого в GridView в,
если (это.Строку заголовка != значение null) { это.Строку заголовка.TableSection = TableRowSection.TableHeader; }
<div с классом="и столик-держатель" и></дел>
.Примечание: если ваш заголовок имеет элементы управления, то вам может понадобиться, чтобы добавить некоторые jQuery скрипт, чтобы передать события в клонированной головой исходный заголовок. Этот код уже доступен в jQuery липкий заголовка плагина создать [jmosbech][1]
Если вы используете полноэкранную таблицу, возможно, вам стоит установить th в display:fixed; и top:0; или попробовать очень похожий подход с помощью css.
Обновление
Просто быстро создайте рабочее решение с iframe (html4.0). Этот пример НЕ соответствует стандарту, однако вы легко сможете его исправить:
outer.html
test.html
Использование
display: fixed
в секцииthead
должно сработать, но чтобы оно работало только для текущей таблицы в режиме просмотра, вам понадобится помощь JavaScript. И это будет непросто, потому что ему нужно будет определить места прокрутки и расположение элементов относительно области просмотра, что является одной из основных областей несовместимости браузеров.Посмотрите на популярные JavaScript-фреймворки (jQuery, MooTools, YUI и т.д. и т.п.), чтобы понять, могут ли они сделать то, что вы хотите, или облегчить выполнение того, что вы хотите.
Это'ы расстраивает то, что прекрасно работает в одном браузере не't работа в других. Следующий работает в Firefox, но не в Chrome или IE:
Что концептуального вы сделали было здорово! Однако я также нашел этот плагин jQuery, который, кажется, работает очень хорошо. Надеюсь, что это помогает!