Image upload idea
@jessedodds shot (http://drbl.in/bPbV) in HTML5/CSS3. Code will be on GitHub.
by Umar
HTML
<form>
<div>
<figure>
<img src="none" alt="">
</figure><!--
--><label>Choose a file...</label><!--
--><progress value=0.3></progress>
</div>
</form>
CSS
div {
display: inline-block;
position: relative;
width: 150px;
height: 32px;
background-image: -webkit-linear-gradient(top, #f3f3f3 0%, #dfdfdf 100%);
box-shadow: inset 0 1px rgba(255, 255, 255, .4),
0 1px 3px rgba(0, 0, 0, .25);
border: 1px solid #d7d7d7;
border-radius: 4px;
-webkit-transition: .05s, width .5s;
}
div:hover {
background-image: -webkit-linear-gradient(top, #f6f6f6 0%, #e2e2e2 100%);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4),
0 1px 4px rgba(0, 0, 0, .25);
}
div:active {
background-image: -webkit-linear-gradient(top, #f3f3f3 0%, #e1e1e1 100%);
box-shadow: inset 0 2px 3px rgba(100, 100, 100, .25),
0 1px 3px rgba(0, 0, 0, .25);
}
div > * {
display: inline-block;
margin: 0;
vertical-align: top;
font: 13px/32px sans-serif;
cursor: pointer;
-webkit-transition: .2s;
}
figure {
width: 24px;
height: 24px;
margin: 3px 3px 0;
border: 1px solid #afafaf;
background-image: -webkit-linear-gradient(top, #ddd 0%, #bbb 45%, #b0b0b0 50%, #c5c5c5 100%);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .25);
}
img {
display: none;
}
label {
width: 117px;
border-left: 1px solid #d7d7d7;
text-align: center;
font-weight: bold;
text-shadow: 0 1px 2px rgba(255, 255, 255, .6);
color: #666;
}
progress {
display: inline-block;
position: absolute;
width: 110px;
height: 8px;
left: 40px;
top: 13px;
opacity: 0;
-webkit-transition: opacity .5s;
-webkit-appearance: none;
}
progress::-webkit-progress-value, progress::-webkit-progress-bar {
border-radius: 3px;
}
progress::-webkit-progress-value {
border: 1px solid;
border-color: #63a633;
border-radius: 3px;
background-image: -webkit-linear-gradient(top, #7BC446 0%, #59AA1E 50%, #60B125 100%);
}
progress::-webkit-progress-bar {
background-image: -webkit-linear-gradient(top, #C7C7C7 0%,...
JavaScript
function $(q){return document.querySelector(q)}
$('div').addEventListener('click', function(e) {
e.preventDefault();
$('label').style.display = 'none';
this.style.width = '32px';
$('progress').style.opacity = 1;
});