Почему на мобильной версии не работает sticky для table?

Ссылка скопирована
1 ответ

У меня используются такие стили, чтобы сделать 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 пикселей (это относительно последнего примера)

  • IvanU7n,

    А как сделать так, чтобы для мобилок применялось?

    Когда max-width указывается, это значит же, что до 1300px это правило тоже работает. Разве нет?

  • Famper Wasteland, убрать медиа запрос и нет, медиа запроса-работает при срабатывании условия, а условие (width >= 1300px)

    а вот почему не срабатывает без медиа запроса подсказать не могу, слишком мало информации (как минимум классы), проверяйте на минимальном примере и уже потом экстраполируйте

  • IvanU7n,

    медиа запроса-работает при срабатывании условия, а условие (width >= 1300px)

    В условии @media (max-width: 1300px) написано вообще-то обратное: сработает при ширине меньшей или равной 1300. (Если больше ничем не перебьется).

    Famper Wasteland, почему не работает - не ясно. Ваших стилей недостаточно, чтобы это определить. Например, забыли указать высоту или задали overflow не тому элементу или что-то ещё.

  • Ankhena, а не могли бы подсказать рабочий пример, который работает и на мобильных устройствах?
  • Famper Wasteland, было бы логичнее, если бы вы сделали полный пример, который там не работает. Без лишнего кода, но так, чтобы его можно было открыть с мобилки и увидеть сложности.
  • Всем спасибо, нашел проблему. Связана с тем, что для определенных устройств стоит этот стиль:

    @media (max-width: 767.98px) {     .main {         overflow-y: hidden     } }

    @media (max-width: 767.98px) { .main { overflow-y: hidden } }

    Это стояло в глобальных стилях.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Алексей Денисов Ответ

    Для того чтобы понять, почему на мобильной версии не работает 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;
      }
    }

    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 таблицей на мобильной версии все еще остается, возможно, вам стоит обратиться к специалисту по веб-разработке для более детального анализа проблемы.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно