W3docs

CSS псевдокласс :fullscreen

Используйте CSS-селектор :fullscreen для выбора элемента, отображаемого в полноэкранном режиме. Узнайте о псевдоклассе и попрактикуйтесь на примерах.

Псевдокласс :fullscreen соответствует элементу, который в данный момент отображается в полноэкранном режиме. Он позволяет применять отдельный набор стилей для полноэкранного состояния, не затрагивая обычные стили элемента.

Пример псевдокласса CSS :fullscreen

На этой странице объясняется, для чего нужен :fullscreen, как он связан с JavaScript Fullscreen API, как писать стили только для полноэкранного режима и какие типичные ошибки следует избегать.

Для чего нужен :fullscreen

Веб-страница не переходит в полноэкранный режим самостоятельно. Полноэкранный режим запрашивается через JavaScript Fullscreen API (element.requestFullscreen()), и этот вызов должен происходить в ответ на жест пользователя, например на клик — иначе браузеры блокируют его, чтобы предотвратить злоупотребления.

Как только элемент переходит в полноэкранный режим, браузер устанавливает для него состояние :fullscreen. Это сигнал для CSS: правила, написанные под :fullscreen, применяются только тогда, когда элемент занимает весь экран, и автоматически отменяются, как только пользователь выходит из режима (например, нажав Esc).

Это полезно, когда полноэкранный макет должен отличаться от встроенного — видеоплеер, скрывающий окружающие элементы управления, галерея изображений, растянутая до краёв экрана, или слайдшоу, переключающееся на тёмный фон.

Информация

Современные браузеры поддерживают псевдокласс :fullscreen без префиксов. Устаревшие префиксы -webkit- и -moz- в основном вышли из употребления, а -ms- больше не поддерживается. Горячая клавиша браузера F11 переводит всё окно в полноэкранный режим, но не активирует состояние :fullscreen для конкретного элемента — это делает только Fullscreen API.

Спецификация

Fullscreen API

Синтаксис

:fullscreen {
  /* styles that apply only in fullscreen mode */
}

Также можно ограничить область применения конкретным элементом, чтобы не затрагивать посторонние элементы:

.player:fullscreen {
  background-color: #000;
}

/* descendants of the fullscreen element */
.player:fullscreen .controls {
  display: flex;
}

Поскольку переход в полноэкранный режим осуществляется через скрипт, стилизацию :fullscreen почти всегда сочетают с кнопкой, вызывающей requestFullscreen(), как показано ниже.

Пример селектора :fullscreen

Контейнер имеет небольшой размер во встроенном режиме. Когда кнопка переводит его в полноэкранный режим, правило :fullscreen меняет его цвет, растягивает на весь экран и отображает ранее скрытый текст.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .example {
        padding: 10px;
        height: 200px;
        width: 95%;
        background-color: #1c87c9;
      }
      .example p {
        visibility: hidden;
        text-align: center;
        color: #eeeeee;
        font-size: 3em;
      }
      .example:fullscreen {
        background-color: #8ebf42;
        width: 100vw;
        height: 100vh;
      }
      .example:fullscreen p {
        visibility: visible;
      }
    </style>
  </head>
  <body>
    <h2>:fullscreen pseudo-class example</h2>
    <div class="container">
      <div class="example" id="example">
        <p>Fullscreen mode</p>
      </div>
      <br />
      <button onclick="document.getElementById('example').requestFullscreen();">Click here</button>
    </div>
  </body>
</html>

Стилизация фона

Когда элемент переходит в полноэкранный режим, браузер рисует ::backdrop позади него, заполняя область, не перекрытую элементом (по умолчанию чёрного цвета). Вы можете изменить его стиль с помощью псевдоэлемента ::backdrop:

.example:fullscreen::backdrop {
  background-color: #1c87c9;
}
Примечание

::backdrop также используется другими элементами верхнего слоя, например <dialog>, открытым через showModal(), поэтому он полезен не только для полноэкранного режима.

Типичные ошибки

  • Ничего не происходит при загрузке страницы. :fullscreen срабатывает только после выполнения requestFullscreen(); с помощью одного CSS войти в полноэкранный режим невозможно.
  • Запрос должен исходить от жеста пользователя. Вызов requestFullscreen() вне обработчика клика, нажатия клавиши или аналогичного события будет отклонён браузером.
  • Используйте единицы viewport для задания размеров. В полноэкранном режиме элемент обычно должен иметь width: 100vw; height: 100vh, чтобы действительно заполнять экран.
  • F11 — это не то же самое. Эта клавиша переводит в полноэкранный режим окно браузера, а не выбранный элемент, и не активирует :fullscreen.

Связанные селекторы

Практика

Практика
Какие способы сделать веб-страницу полноэкранной упоминаются в статье W3Docs?
Какие способы сделать веб-страницу полноэкранной упоминаются в статье W3Docs?
Was this page helpful?