利用label標(biāo)簽和CSS美化文件上傳表單(不兼容IE6)
發(fā)布時(shí)間:2011-06-20 21:30:43 作者:佚名
我要評(píng)論

文件上傳類(lèi)型表單是一個(gè)讓很多前端開(kāi)發(fā)者糾結(jié)過(guò)的表單類(lèi)型,因?yàn)樗且粋€(gè)無(wú)法單純用CSS給它定義兼容的樣式。
上周的工作中有個(gè)批量上傳圖片的頁(yè)面,又遇到了這個(gè)問(wèn)題,于是,今天把我的解決方案奉獻(xiàn)給大家:利用label標(biāo)簽與CSS共同打造一個(gè)樣式可控的并兼容IE6之外主流瀏覽器的上傳表單。
實(shí)現(xiàn)思路通俗易懂:

首先,我們要新增一個(gè)與file相冊(cè)大小的button按鈕,然后利用label為初始的file類(lèi)型表單定義標(biāo)注(關(guān)于label的解釋與用法,此處不詳解,不了解的請(qǐng)自行查閱HTML手冊(cè))。如此一來(lái),一個(gè)可以觸發(fā)選擇文件表單的按鈕就出來(lái)了。接下來(lái),相信很多人都知道怎么做了。
有了一個(gè)可以觸發(fā)file表單的按鈕,只要通過(guò)絕對(duì)定位將file表單從文檔流中拖出,然后用z-index屬性將它的層級(jí)提升到比button按鈕高,同時(shí)將file表單的透明度置為0,這樣一來(lái),file表單就正好覆蓋在button按鈕上了,并且可觸發(fā)選擇文件表單。此處有一點(diǎn)需要說(shuō)明,F(xiàn)ireFox中是無(wú)法通過(guò)width來(lái)設(shè)定寬度值的,所以需要用input的size值來(lái)設(shè)定file表單寬度值。
最后,附上樣例中的成型代碼:
HTML代碼:
<DIV class=btns>
<INPUT class=btn_file_molding id=input_file_molding type=file size=6>
<LABEL for=input_file_molding>
<INPUT type=button value=添加照片></LABEL>
</DIV>
CSS代碼:
.btns{position:relative}
.btns input{width:120px;height:30px}
.btns .btn_file_molding{position:absolute;left:0;top:0;z-index:1;border:0 none;filter:alpha(opacity=0);opacity:0}/*file的z-index要大于button*/
幾個(gè)注意的細(xì)節(jié):
1.file表單與button按鈕的高寬一定要相同;
2.因各瀏覽器對(duì)file表單的表現(xiàn)不一致,其邊框一定要隱藏掉,以免出現(xiàn)各瀏覽器不兼容問(wèn)題;
3.firefox中直接通過(guò)樣式定義width是無(wú)效的,需要用size設(shè)置file寬度;
4.IE6可用JS為button綁定file表單的點(diǎn)擊事件,此處不詳述。
另,本文提供的是一種主體思路,你可以在此思路上做進(jìn)一步的美化擴(kuò)展,比如加背景圖片文字樣式等等。
實(shí)現(xiàn)思路通俗易懂:

首先,我們要新增一個(gè)與file相冊(cè)大小的button按鈕,然后利用label為初始的file類(lèi)型表單定義標(biāo)注(關(guān)于label的解釋與用法,此處不詳解,不了解的請(qǐng)自行查閱HTML手冊(cè))。如此一來(lái),一個(gè)可以觸發(fā)選擇文件表單的按鈕就出來(lái)了。接下來(lái),相信很多人都知道怎么做了。
有了一個(gè)可以觸發(fā)file表單的按鈕,只要通過(guò)絕對(duì)定位將file表單從文檔流中拖出,然后用z-index屬性將它的層級(jí)提升到比button按鈕高,同時(shí)將file表單的透明度置為0,這樣一來(lái),file表單就正好覆蓋在button按鈕上了,并且可觸發(fā)選擇文件表單。此處有一點(diǎn)需要說(shuō)明,F(xiàn)ireFox中是無(wú)法通過(guò)width來(lái)設(shè)定寬度值的,所以需要用input的size值來(lái)設(shè)定file表單寬度值。
最后,附上樣例中的成型代碼:
HTML代碼:
復(fù)制代碼
代碼如下:<DIV class=btns>
<INPUT class=btn_file_molding id=input_file_molding type=file size=6>
<LABEL for=input_file_molding>
<INPUT type=button value=添加照片></LABEL>
</DIV>
CSS代碼:
復(fù)制代碼
代碼如下:.btns{position:relative}
.btns input{width:120px;height:30px}
.btns .btn_file_molding{position:absolute;left:0;top:0;z-index:1;border:0 none;filter:alpha(opacity=0);opacity:0}/*file的z-index要大于button*/
幾個(gè)注意的細(xì)節(jié):
1.file表單與button按鈕的高寬一定要相同;
2.因各瀏覽器對(duì)file表單的表現(xiàn)不一致,其邊框一定要隱藏掉,以免出現(xiàn)各瀏覽器不兼容問(wèn)題;
3.firefox中直接通過(guò)樣式定義width是無(wú)效的,需要用size設(shè)置file寬度;
4.IE6可用JS為button綁定file表單的點(diǎn)擊事件,此處不詳述。
另,本文提供的是一種主體思路,你可以在此思路上做進(jìn)一步的美化擴(kuò)展,比如加背景圖片文字樣式等等。
相關(guān)文章
css input[type=file] 樣式美化(input上傳文件樣式 )
這篇文章主要介紹了css input[type=file] 樣式美化(input上傳文件樣式 )的相關(guān)資料,需要的朋友可以參考下2018-06-20基于jQuery+CSS3實(shí)現(xiàn)帶動(dòng)畫(huà)效果文件上傳插件特效源碼
基于jQuery+CSS3實(shí)現(xiàn)帶動(dòng)畫(huà)效果文件上傳插件特效源碼是一款基于jQuery+CSS3實(shí)現(xiàn)的上傳界面,支持文件拖到上傳動(dòng)畫(huà)代碼。本段特效源碼可以在各大網(wǎng)站使用,有需要的朋友直接2017-07-10HTML5+CSS3實(shí)現(xiàn)無(wú)插件拖拽上傳圖片(支持預(yù)覽與批量)
本篇文章主要介紹了HTML5+CSS3實(shí)現(xiàn)無(wú)插件拖拽上傳圖片(支持預(yù)覽與批量),現(xiàn)在html5提供了API以及File,F(xiàn)ileReader,XMLHttpRequest等強(qiáng)大的API,為我們拖放實(shí)現(xiàn)上傳提供2017-01-05文件上傳input file簡(jiǎn)便美化方案(css)
文件上傳input在各個(gè)瀏覽器里表現(xiàn)形式都不一樣,這里通過(guò)css樣式控制,盡量在多瀏覽器中的表現(xiàn)都一樣2013-01-10- 表單上傳文件的“瀏覽”按鈕修改代碼,需要的朋友可以參考下。2011-05-03
- 這篇文章主要介紹了使用css畫(huà)一個(gè)文件上傳圖案效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-12-16