Я не могу вспомнить источник техники, но это кажется кросс-браузерным.Протестировано в:
- Google Chrome 9
- FireFox 3,6
- Internet Explorer 6-9
- Opera 10
- Safari дляWindows
Вот полный код:
HTML:
<div>
<button><!-- this is skinnable -->Pick a file ...</button>
<input type="file" />
</div>
CSS:
div
{
position:relative;
width: 100px;
height: 30px;
overflow:hidden;
}
div button
{
position: absolute;
width: 100%;
height: 100%;
}
div input
{
font: 500px monospace; /* make the input's button HUGE */
opacity:0; /* this will make it transparent */
filter: alpha(opacity=0); /* transparency for Internet Explorer */
position: absolute; /* making it absolute with z-index:1 will place it on top of the button */
z-index: 1;
top:0;
right:0;
padding:0;
margin: 0;
}
Идея состоит в том, чтобы сделать <input type="file" />
прозрачным и поместить его поверх некоторого стиля, способного к контенту (в данном случае <button>
).Когда конечный пользователь нажимает кнопку, он фактически нажимает <input type="file" />
.