因爲<input type="file" />太醜,一般的解決方案是,讓file類型的元素透明度爲0,覆蓋在咱們漂亮的按鈕上。而後咱們去點擊好看的按鈕,實際上點擊的是file元素。
html
然而,此方法有不少的不足:瀏覽器
一、尺寸控制不靈活。CSS width
屬性有些瀏覽器無論用,須要使用size
,而後高度控制也不精準,咱們很難正好覆蓋在好看的自定義按鈕上。ide
二、樣式很差控制,按鈕的hover
態以及active
態很差處理。wordpress
三、HTML結構限制以及定位成本。ui
更好的辦法是,使用label元素與file控件關聯。spa
<label class="ui_button ui_button_primary" for="xFile">上傳文件</label> <form> <input type="file" id="xFile" style="position:absolute;clip:rect(0 0 0 0);"> </form>
這樣就解決了以上問題。code
本文出自張鑫旭博客:http://www.zhangxinxu.com/wordpress/2015/11/html-input-type-file/orm