W3cubDocs

/CSS

::file-selector-button

The ::file-selector-button CSS pseudo-element represents the button of an <input> of type="file".

WebKit/Blink compatible browsers like Chrome, Opera and Safari (indicated by the -webkit prefix) support a non-standard pseudo-class ::-webkit-file-upload-button which serves the same purpose.

Syntax

selector::file-selector-button

Examples

HTML

<form>
  <label for="fileUpload">Upload file</label>
  <input type="file" id="fileUpload">
</form>

CSS

input[type=file]::file-selector-button {
  border: 2px solid #6c5ce7;
  padding: .2em .4em;
  border-radius: .2em;
  background-color: #a29bfe;
  transition: 1s;
}
 
input[type=file]::file-selector-button:hover {
  background-color: #81ecec;
  border: 2px solid #00cec9;
}

Example with fallback for browsers supporting the -webkit prefix. Note that as a selector you will need to write out the whole code block twice, as an unrecognized selector invalidates the whole list.

Note that ::file-selector-button is a whole element, and as such matches the rules from the UA stylesheet. In particular, fonts and colors won't necessarily inherit from the input element.

HTML

<form>
  <label for="fileUpload">Upload file</label>
  <input type="file" id="fileUpload">
</form>

CSS

input[type=file]::-webkit-file-upload-button {
  border: 2px solid #6c5ce7;
  padding: .2em .4em;
  border-radius: .2em;
  background-color: #a29bfe;
  transition: 1s;
}

input[type=file]::file-selector-button {
  border: 2px solid #6c5ce7;
  padding: .2em .4em;
  border-radius: .2em;
  background-color: #a29bfe;
  transition: 1s;
}

input[type=file]::-webkit-file-upload-button:hover {
  background-color: #81ecec;
  border: 2px solid #00cec9;
}
 
input[type=file]::file-selector-button:hover {
  background-color: #81ecec;
  border: 2px solid #00cec9;
}

Specifications

The pseudo-element has been resolved on by the CSS WG however the edit has not yet been made in a specification.

Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
::file-selector-button No
No
1
Uses the non-standard name: ::-webkit-file-upload-button
No
No
79
Uses the non-standard name: ::-webkit-file-upload-button
82 No No
No
15
Uses the non-standard name: ::-webkit-file-upload-button
No
No
3
Uses the non-standard name: ::-webkit-file-upload-button
Mobile
Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
::file-selector-button No
No
1
Uses the non-standard name: ::-webkit-file-upload-button
No
No
18
Uses the non-standard name: ::-webkit-file-upload-button
82 No
No
14
Uses the non-standard name: ::-webkit-file-upload-button
No
No
1
Uses the non-standard name: ::-webkit-file-upload-button
No
No
1.0
Uses the non-standard name: ::-webkit-file-upload-button

See also

© 2005–2020 Mozilla and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/::file-selector-button