Кратко
Скопировано:
— псевдоэлемент, представляющий кнопку внутри поля <input type
. Позволяет стилизовать её так же, как любую кнопку интерфейса: менять фон, бордеры, скругления, состояния наведения/фокуса и т. п.
Пример
Скопировано<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 { ... }
- Работает только на элементах
<input type
.= "file"> - Наследует шрифт родительского входа не всегда. Чтобы текст кнопки совпадал с дизайном, задайте
font
.: inherit - Поддерживаются обычные состояния:
:hover
,:active
,:focus
,:disabled
и медиа-запросы.
Как понять
СкопированоПо умолчанию браузер рисует системную кнопку «Выбрать файл». Псевдоэлемент :
даёт контроль над её оформлением, не ломая семантику и доступность. Текст внутри кнопки задаётся браузером/локалью и не изменяется CSS — это особенность системного элемента.
Подсказки
Скопировано💡 Задавайте font
, чтобы кнопка выглядела консистентно с остальными элементами формы.
💡 Контролируйте размеры через padding
, а высоту входа — через line
и font
.
💡 Для лучшей доступности обеспечьте заметные стили фокуса (outline
, outline
).
💡 Для старых браузеров можно добавить префиксные аналоги: :
(WebKit) и :
(устаревший IE/Edge).
- Chrome 89, поддерживается
- Edge 89, поддерживается
- Firefox 82, поддерживается
- Safari 14.1, поддерживается