Почему на мобильной версии не работает sticky для table?
У меня используются такие стили, чтобы сделать th в качестве sticky для многих устройств. Но работает только на ПК.
CSS:
th { background: white; position: sticky; top: 0; /* Don't forget this, required for the stickiness */ box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.4); } |
th { background: white; position: sticky; top: 0; /* Don't forget this, required for the stickiness */ box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.4); }
HTML:
<div class="main"> <table id="summary-city" class="table table-striped table-bordered table-thead-sticky"> <thead class="report-thead" id="header"> <tr> <th style="text-align: center !important; vertical-align: middle !important; width: 12.5%;">Шапка 1</th> <th style="text-align: center !important; vertical-align: middle !important; width: 12.5%;">Шапка 2</th> <th style="text-align: center !important; vertical-align: middle !important; width: 12.5%;">Шапка 3</th> ... </tr> </thead> ... </table> </div> |
<div class="main"> <table id="summary-city" class="table table-striped table-bordered table-thead-sticky"> <thead class="report-thead" id="header"> <tr> <th style="text-align: center !important; vertical-align: middle !important; width: 12.5%;">Шапка 1</th> <th style="text-align: center !important; vertical-align: middle !important; width: 12.5%;">Шапка 2</th> <th style="text-align: center !important; vertical-align: middle !important; width: 12.5%;">Шапка 3</th> ... </tr> </thead> ... </table> </div>
Вся проблема с том, что на ПК все отлично. Sticky работает для th, а вот на мобильных устройствах не работает. Попытался сделать так:
CSS:
@media (max-width: 1300px) { th { background: white; position: sticky; top: 0; box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.4); } } |
@media (max-width: 1300px) { th { background: white; position: sticky; top: 0; box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.4); } }
Но это безрезультатно...
Дополнительно:
ну так оно не применяется при ширине вьюпорта меньше 1300 пикселей (это относительно последнего примера)
А как сделать так, чтобы для мобилок применялось?
Когда max-width указывается, это значит же, что до 1300px это правило тоже работает. Разве нет?
а вот почему не срабатывает без медиа запроса подсказать не могу, слишком мало информации (как минимум классы), проверяйте на минимальном примере и уже потом экстраполируйте
медиа запроса-работает при срабатывании условия, а условие (width >= 1300px)
В условии @media (max-width: 1300px) написано вообще-то обратное: сработает при ширине меньшей или равной 1300. (Если больше ничем не перебьется).
Famper Wasteland, почему не работает - не ясно. Ваших стилей недостаточно, чтобы это определить. Например, забыли указать высоту или задали overflow не тому элементу или что-то ещё.
Всем спасибо, нашел проблему. Связана с тем, что для определенных устройств стоит этот стиль:
@media (max-width: 767.98px) { .main { overflow-y: hidden } } |
@media (max-width: 767.98px) { .main { overflow-y: hidden } }
Это стояло в глобальных стилях.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы понять, почему на мобильной версии не работает sticky для таблицы, следует учитывать несколько возможных причин.
1. CSS свойства: Во-первых, убедитесь, что вы правильно задали свойства для таблицы и ее ячеек. Для использования sticky в CSS необходимо задать свойство position: sticky; для таблицы или для необходимых ячеек. Также убедитесь, что у вас правильно указаны значения top, left, right или bottom для позиционирования sticky элемента.
2. Поддержка браузером: Не все мобильные браузеры полностью поддерживают CSS свойство position: sticky;. Проверьте совместимость вашего браузера с этим свойством. Возможно, вам придется использовать альтернативный способ позиционирования элементов на мобильных устройствах.
3. JavaScript: Иногда для реализации sticky элементов на мобильных устройствах требуется использование JavaScript или библиотеки, такой как jQuery. Проверьте, необходимо ли вам добавить скрипт для поддержки sticky на мобильных устройствах.
Приведу пример простого CSS стиля для таблицы с использованием sticky на мобильной версии:
table { width: 100%; border-collapse: collapse; } th, td { padding: 8px; border: 1px solid #ddd; } th { background-color: #f2f2f2; } td { background-color: #fff; } @media screen and (max-width: 600px) { table { overflow-x: auto; } th, td { white-space: nowrap; } th { position: -webkit-sticky; position: sticky; top: 0; background-color: #f2f2f2; } }
Если после применения указанных выше рекомендаций проблема с sticky таблицей на мобильной версии все еще остается, возможно, вам стоит обратиться к специалисту по веб-разработке для более детального анализа проблемы.