CSS-справочникВ стандарте

CSS ::file-selector-button — как работает

CSS ::file-selector-button: принцип работы, корректный синтаксис, практический сценарий, ограничения, ошибки и актуальная совместимость.

Суть темы

Практический смысл «::file-selector-button» связан с тем, чтобы выбрать создаваемую браузером часть элемента или особый фрагмент его содержимого. Псевдоэлемент ::file-selector-button выбирает специальную часть элемента без отдельного HTML-узла. Контрольная проверка «::file-selector-button» проходит в диалоге с возвратом фокуса после закрытия, а наблюдаемой точкой служит состояние при пустом содержимом.

Практическое правило для ::file-selector-button

Для «::file-selector-button» сначала проверяйте, создаётся ли псевдоэлемент в выбранном контексте и доступно ли содержимое без него. После этого сравните исходное и изменённое состояние «::file-selector-button» на одном и том же содержимом.

Синтаксис ::file-selector-button

Минимальная запись «::file-selector-button» нужна для отделения самой возможности от стилей и разметки проекта. Проверьте фрагмент отдельно перед переносом.

css
.label::file-selector-button {
  color: #2563eb;
}
Открыть в Playground

Как работает ::file-selector-button

Применяет декларации к псевдоэлементу без добавления лишнего HTML-узла. Для «::file-selector-button» проверьте две контрольные точки — состояние при пустом содержимом и результат при отключённом JavaScript: так видно, на каком этапе появляется итоговое поведение этой темы.

Проверка в проекте

  • Проверяйте, создаётся ли псевдоэлемент в выбранном контексте и доступно ли содержимое без него; результат относится непосредственно к «::file-selector-button».
  • Сравнить дерево доступности до и после добавления конструкции при разборе «::file-selector-button».
  • Проверьте «::file-selector-button» в диалоге с возвратом фокуса после закрытия через состояние при пустом содержимом и запишите наблюдаемое изменение.
Выбор конструкции

Оставляйте «::file-selector-button» в решении только после проверки в диалоге с возвратом фокуса после закрытия. Если нативная конструкция решает задачу «::file-selector-button» с меньшим числом условий, используйте её.

Практика с ::file-selector-button

Создайте два варианта «::file-selector-button» в изолированном демо: корректный и с одной типичной ошибкой. Сравните варианты «::file-selector-button» через состояние при пустом содержимом и объясните различие.

псевдоэлементы::file-selector-button

Сценарий: в диалоге с возвратом фокуса после закрытия.

Ошибки при работе с ::file-selector-button

01

Доступность

Смысловое содержимое нельзя оставлять доступным только через ::file-selector-button — это предметный риск для «::file-selector-button».

02

Каскад

Зависимость результата от placeholder вместо постоянной подписи при использовании «::file-selector-button».

03

Поддержка

Фиксированные размеры, которые перестают вмещать реальное содержимое; для «::file-selector-button» проверьте это отдельно.

Поддержка ::file-selector-button

Для «::file-selector-button» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «::file-selector-button»; окончательное решение принимайте по аудитории конкретного проекта.

Chromeс версии 89Edgeс версии 89Firefoxс версии 82Safariс версии 14.1

Спецификация: источник 1.

Вопросы о ::file-selector-button

Как понять, что «::file-selector-button» выбрано правильно?

«::file-selector-button» выбрано правильно, когда оно решает задачу «выбрать создаваемую браузером часть элемента или особый фрагмент его содержимого», сохраняет результат в диалоге с возвратом фокуса после закрытия и проходит предметную проверку: проверяйте, создаётся ли псевдоэлемент в выбранном контексте и доступно ли содержимое без него.

Нужен ли запасной вариант для «::file-selector-button»?

Запасной вариант для «::file-selector-button» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «::file-selector-button» должно сохранять смысл, содержимое и основное действие.

Спецификации и источники

Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.