JSFiddle - React, Tailwind, and code Playground
by Michael Eugene Yuen
HTML
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<div class="file_button">
<input type="text" id="upload" />
<div class="wrapper" for="upload">
<input type="file" id="file">
<i class="fa fa-folder-open"></i>
</div>
</div>
<!-- Link to font-aswsome icons -->
<!-- https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css -->
CSS
.file_button {
display: inline-block;
padding: 0;
margin: 0;
}
.wrapper {
display: inline-block;
position: relative;
top: 10px;
left: -5px;
width: 28px;
height: 28px;
background-color: blue;
color: #FFF;
text-align: center;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
cursor: pointer;
overflow: hidden;
}
#upload {
margin: 0;
height: 22px;
}
#file {
display: inline-block;
opacity: 0;
position: absolute;
top: 0;
left: 0;
width: 20px;
height: 20px;
}
.wrapper i.fa {
margin-top: 4px;
cursor: pointer;
}
JavaScript
$('#file').change(function(){
var filename = $('#file').val();
$('#upload').val(filename);
});