Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как показать элемент только на мобильных или только на компьютере

Короткий ответ

Спрячьте элемент по умолчанию и покажите в медиазапросе для узких экранов. Измените ширину окна:

<style>
  .mobile-only { display: none; }
  @media (max-width: 600px) {
    .mobile-only { display: block; }
    .desktop-only { display: none; }
  }
</style>
 
<p class="mobile-only">📱 You are on a narrow screen</p>
<p class="desktop-only">🖥 You are on a wide screen</p>

По способу ввода, а не по ширине

Узкое окно бывает и на компьютере, а широкий экран — у планшета. Если важно, есть ли мышь, проверяйте это напрямую:

<style>
  .touch-hint { display: none; }
  @media (hover: none) and (pointer: coarse) { .touch-hint { display: block; } }
</style>
 
<p class="touch-hint">Swipe left to see more</p>
<p>The hint above is shown only on touch screens.</p>

Ширина контейнера

Если блок должен меняться в зависимости от места, где он стоит, а не от окна, используйте контейнерные запросы @container — карточка в узкой боковой колонке и в широкой основной будет выглядеть по-разному.

Частая ошибка

Одно и то же содержимое пишут дважды — версию для телефона и для компьютера — и прячут лишнюю. Страница становится тяжелее, поисковики видят дубли, а при правке текст легко обновить только в одной копии. Старайтесь перестраивать один и тот же блок CSS-раскладкой, а прятать только действительно разные элементы, например кнопку меню.

Функции из этого ответа

  • @media — Применяет правила только при заданных условиях — ширине окна, теме системы и других.
  • display — Определяет, как элемент ведёт себя в потоке и как раскладывает содержимое.
  • @container — Применяет правила в зависимости от размера контейнера, а не окна.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.