Почему ломается верстка при 767px и как это исправить

    В вашем коде описаны медиа-запросы для разных разрешений, но при достижении ширины экрана 767px и ниже макет перестаёт быть корректным. Это типичная ситуация, когда CSS-правила конфликтуют или не учитывают все изменения. Давайте разберём основные причины и способы их устранения.

    Основные причины поломки адаптива на 767px

    Чаще всего проблема кроется в неправильном порядке медиа-запросов или в том, что некоторые стили не переопределяются при уменьшении экрана. В вашем случае есть несколько ключевых моментов:

    • Конфликт свойств flex-direction: для .motivation-card и .motivation-item:nth-child(even) .motivation-card указано flex-direction: column-reverse, что может ломать порядок элементов.
    • Недостаточная настройка grid-template-columns: на 767px вы ставите 2 колонки для .training-types-list, но если контент не помещается, сетка может вылезти за границы.
    • Отсутствие box-sizing: если не задан box-sizing: border-box, паддинги и бордеры увеличивают ширину блоков, вызывая горизонтальный скролл.

    Как исправить: пошаговая инструкция

    1. Проверьте порядок медиа-запросов

    Убедитесь, что запросы идут от большего разрешения к меньшему (или наоборот, но последовательно). В вашем коде сначала 1919px, потом 1280px, затем 1024px и 767px - это правильный нисходящий порядок. Однако следите, чтобы более специфичные правила не перезаписывались случайно.

    2. Добавьте box-sizing: border-box для всех элементов

    В начале CSS-файла пропишите:

    *, *::before, *::after { box-sizing: border-box; }

    Это гарантирует, что паддинги не увеличат ширину блоков за пределы родителя.

    3. Исправьте flex-direction для .motivation-card

    На 767px у вас flex-direction: column-reverse для всех карточек и даже для чётных элементов. Это может переворачивать содержимое неожиданным образом. Попробуйте задать flex-direction: column для мобильной версии, а реверс оставьте только для конкретных случаев, если это действительно нужно.

    4. Настройте сетку .training-types-list

    На 767px вы используете grid-template-columns: repeat(2, 1fr). Если элементы слишком широкие, добавьте gap или overflow: hidden для родителя. Также проверьте, что у дочерних элементов нет фиксированной ширины, мешающей адаптации.

    5. Проверьте высоту и отступы

    В медиа-запросе для 767px у .header-menu-link высота 32px, а для 1024px - 50px. Убедитесь, что все тексты и иконки помещаются в эти размеры. Если нужно, используйте min-height вместо height.

    Дополнительные советы для стабильного адаптива

    • Используйте относительные единицы (%, vw, rem) вместо пикселей.
    • Для изображений всегда ставьте max-width: 100% и height: auto.
    • Тестируйте каждое разрешение в инструментах разработчика браузера.
    • Избегайте вложенных медиа-запросов - это усложняет поддержку.

    После внесения этих правок проверьте верстку на 767px и ниже. Если проблема осталась, вероятно, какой-то элемент имеет фиксированную ширину или неправильный position. Пересмотрите весь CSS для мобильной версии и убедитесь, что каждый блок адаптируется корректно.

    Часто задаваемые вопросы