Задать вопрос
@Ramazan-Ahriev
Изучаю frontend по американскому ютубу

Различие скелета в пк версии и телефонной, как лучше всего делать такие вещи?

Столкнулся с такой ситуацией:
по макету для десктопа и для мобильной версии расположение элементов сильно отличается. И когда смотришь на оба варианта, возникает ощущение, что под каждый нужно делать отдельный HTML-скелет.

Моя первая идея:
Сначала сверстать десктопную версию, а затем — отдельный скелет под мобильную, и при достижении определённой ширины:

отключать десктопную версию

включать мобильную

Но это решение кажется мне некрасивым и слишком «колхозным», ведь так можно напороться на дублирование и запутанную поддержку.

Ключевые отличия макета:
Верхняя менюшка (молочного цвета)

На десктопе: "Доставка", "Оплата", "Контакты" находятся в самом конце блока

На мобильной: эти ссылки уже перемещены вниз

Блок выбора языка

На десктопе: находится внизу блока

На мобильной: поднимается вверх

☎️ Номер телефона и геолокация

На десктопе: видны сразу

На мобильной: прячутся в раскрывающееся бургер-меню

Логотип

На десктопе: находится слева

На мобильной: по центру

Ну на картинах это будет видно

Как красиво и грамотно реализовать такую адаптивность без создания двух разных HTML-структур?
Я не прошу полного кода, достаточно:
маленького примера
или ссылки на хорошее видео, где объясняется похожая адаптивная реализация. Заранее спасибо!

4c50a669910f46ed.jpg?ex=6815477c&is=6813f5fc&hm=63fa74daa48af28e88a1ab79e9c5247e97b65ee82963a9e7235ef4a0bd142750&=&format=webp
19c5f41fc916b1fe.jpg?ex=68154781&is=6813f601&hm=df7ad44fb842b5734bd3c1535083e4fad9f9098addcaaa5479797962db3f8bcf&=&format=webp
95fc7bb2fa831056.jpg?ex=68154783&is=6813f603&hm=50f0b6297e64f678e8416caa7d5be8c415f1954db05f42089891c8c4a8829477&format=webp
  • Вопрос задан
  • 190 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
basn63
@basn63
вебмастер
https://doka.guide/css/media/

на определённых диапазонах ширины экрана можно в css управлять отображением блоков
Ответ написан
Комментировать
@ImagineTables
1. «по макету для десктопа и для мобильной версии расположение элементов сильно отличается» — подумайте, правильный ли это макет. (Или, скорее, правильная ли трактовка макета вами). Расположение элементов обычно ставят в зависимость от ширины экрана (при помощи media queries), а уже через неё — возникает разница между десктопом и мобилой.

Если хочется сделать радикальное упрощение для мобил, сайт обычно пакуют в приложение вместе с webview.

2. «Сначала сверстать десктопную версию, а затем — отдельный скелет под мобильную» — я бы так делать не стал. Более того, для меня это хороший критерий, чтобы понять, правильно или нет устроен «скелет». Если вы не можете один и тот же «скелет» по-разному представить для разных условий, значит структура недостаточно изолирована от отображения.

Чтобы этого избежать, меньше пользуйтесь утилитами (классами типа w-100, d-none и т.д.), размечайте маркап семантически (классами типа «меню для юзера», «карточка того-то», «панель сего-то»), не вводите атрибуты для контроля за отображением, а отображение настраивайте строго через CSS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы