::file-selector-button
The ::file-selector-button
CSS pseudo-element represents the button of an <input>
of type="file"
.
Note: Older versions of WebKit/Blink compatible browsers like Chrome, Opera and Safari (indicated by the -webkit
prefix) supported a non-standard pseudo-element ::-webkit-file-upload-button
.
Legacy Edge and later versions of IE supported a non-standard pseudo-element ::-ms-browse
.
Both of these pseudo-elements serve the same purpose as ::file-selector-button
.
Syntax
selector::file-selector-button
Examples
Basic example
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; }
Result
Example with fallback for older browsers supporting the -webkit
and -ms
prefixes. 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.
Fallback example
HTML
<form> <label for="fileUpload">Upload file</label> <input type="file" id="fileUpload"> </form>
CSS
input[type=file]::-ms-browse { border: 2px solid #6c5ce7; padding: .2em .4em; border-radius: .2em; background-color: #a29bfe; } 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]::-ms-browse:hover { background-color: #81ecec; border: 2px solid #00cec9; } 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; }
Result
Specifications
Specification |
---|
CSS Pseudo-Elements Module Level 4 (CSS Pseudo-Elements 4) # file-selector-button-pseudo |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
::file-selector-button |
89
1
|
89
79
12-79
|
82 |
10 |
75
15
|
14.1
3
|
89
1
|
89
18
|
82 |
63
14
|
14.5
1
|
15.0
1.0
|
See also
- WebKit CSS extensions
- Microsoft CSS extensions
- File and Directory Entries API
- File and Directory Entries API support in Firefox
<input type="file">
© 2005–2021 MDN 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