Клавиша / esc

::file-selector-button

Псевдоэлемент для стилизации встроенной кнопки выбора файла внутри <input type="file">. Позволяет оформить кнопку в стиле интерфейса и реагировать на ховер/фокус.

Время чтения: меньше 5 мин

Кратко

Скопировано

::file-selector-button — псевдоэлемент, представляющий кнопку внутри поля <input type="file">. Позволяет стилизовать её так же, как любую кнопку интерфейса: менять фон, бордеры, скругления, состояния наведения/фокуса и т. п.

Пример

Скопировано
        
          
          <label>  Загрузить файл  <input class="uploader" type="file" /></label>
          <label>
  Загрузить файл
  <input class="uploader" type="file" />
</label>

        
        
          
        
      
        
          
          .uploader::file-selector-button {  padding: 0.5rem 0.75rem;  border: 1px solid #2e6be6;  border-radius: 0.5rem;  background: #2e6be6;  color: white;  font: inherit;  cursor: pointer;}.uploader::file-selector-button:hover {  background: #1f4fb3;  border-color: #1f4fb3;}.uploader::file-selector-button:focus {  outline: 2px solid #94b6ff;  outline-offset: 2px;}
          .uploader::file-selector-button {
  padding: 0.5rem 0.75rem;
  border: 1px solid #2e6be6;
  border-radius: 0.5rem;
  background: #2e6be6;
  color: white;
  font: inherit;
  cursor: pointer;
}

.uploader::file-selector-button:hover {
  background: #1f4fb3;
  border-color: #1f4fb3;
}

.uploader::file-selector-button:focus {
  outline: 2px solid #94b6ff;
  outline-offset: 2px;
}

        
        
          
        
      
Открыть демо в новой вкладке

Как пишется

Скопировано

Селектор вида:

        
          
          input[type="file"]::file-selector-button { ... }
          input[type="file"]::file-selector-button { ... }

        
        
          
        
      

Как понять

Скопировано

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

Подсказки

Скопировано

💡 Задавайте font: inherit, чтобы кнопка выглядела консистентно с остальными элементами формы.
💡 Контролируйте размеры через padding, а высоту входа — через line-height и font-size.
💡 Для лучшей доступности обеспечьте заметные стили фокуса (outline, outline-offset).
💡 Для старых браузеров можно добавить префиксные аналоги: ::-webkit-file-upload-button (WebKit) и ::-ms-browse (устаревший IE/Edge).

Поддержка в браузерах:
  • Chrome 89, поддерживается
  • Edge 89, поддерживается
  • Firefox 82, поддерживается
  • Safari 14.1, поддерживается
О Baseline