文件上傳input file簡(jiǎn)便美化方案(css)
發(fā)布時(shí)間:2013-01-10 15:50:50 作者:佚名
我要評(píng)論

文件上傳input在各個(gè)瀏覽器里表現(xiàn)形式都不一樣,這里通過(guò)css樣式控制,盡量在多瀏覽器中的表現(xiàn)都一樣
文件上傳input在各個(gè)瀏覽器里表現(xiàn)形式都不一樣:
ie6
ie7,8,9
ff
chrome
這里介紹一種簡(jiǎn)單實(shí)用的,在各種瀏覽器下表現(xiàn)一致的美化方法,效果如下:
ie6無(wú)法美化,只能應(yīng)用部分效果,如下:
選擇文件后(以ff為例,不用瀏覽器顯示的路徑不同):
html代碼:
復(fù)制代碼
代碼如下:<form id="UploadForm" method="post" enctype="multipart/form-data">
<div class="file-uploader-wrap">
<input type="file" class="file-uploader" name="uploadDataField" id="FileUploader"/>
<div class="file-uploader-wrap-fake">
<input type="text" id="PathDisplayer" class="input-text" disabled />
<a href="javascript:void(0)" class="link-btn" >選擇文件</a>
</div>
</div>
</form>
css代碼:
復(fù)制代碼
代碼如下:body{
font-size: 12px;
text-align: left;
}
.input-text{
height: 23px;
width: 315px;
line-height: 23px;
vertical-align: middle;
background: #FAFBFD;
border:1px solid #d4d4d4;
}
.link-btn{
width: 78px;
height: 25px;
display: inline-block;
line-height: 25px;
text-align: center;
vertical-align: middle;
background: url('./images/btn.png') 0 -110px;
color: #6d767f;
text-decoration: none;
}
.file-uploader-wrap{
position: relative;
width: 405px;
height: 27px;
margin-top: 20px;
}
.file-uploader-wrap-fake{
position: absolute;
top: 0;
left: 0;
z-index: 1;
height: 27px;
_display : none;
}
.file-uploader-wrap .file-uploader{
position: relative;
width: 400px;
height: 27px;
text-align: right;
filter : alpha(opacity = 0);
opacity: 0;
z-index: 2;
cursor: pointer;
_filter : none;
_text-align : left;
_line-height : 27px;
}
js代碼:
復(fù)制代碼
代碼如下:window.onload = function(){
var fileUploader = document.getElementById('FileUploader');
var pathDisplayer = document.getElementById('PathDisplayer');
if(fileUploader.addEventListener){
fileUploader.addEventListener('change', fileUploaderChangeHandler, false);
}else if(fileUploader.attachEvent){
fileUploader.attachEvent('onclick', fileUploaderClickHandler);
}else{
fileUploader.onchange = fileUploaderChangeHandler;
}
function fileUploaderChangeHandler(){
pathDisplayer.value = fileUploader.value;
}
function fileUploaderClickHandler(){
setTimeout(function(){
fileUploaderChangeHandler();
}, 0);
}
}
在樣式方面,采用的是將上傳input設(shè)置為透明,并且置于文本框和選擇文件按鈕之上的方法。
.file-uploader中的text-align:right樣式是為了將file input置于右邊,從而使點(diǎn)擊選擇文件按鈕時(shí)可以點(diǎn)擊到file input。
js主要作用是選擇文件后將路徑顯示在文本框中。
- ie7,8只支持file input的click事件,在點(diǎn)擊file input時(shí)觸發(fā),然后利用ie7,8中選擇文件對(duì)話框出現(xiàn)時(shí)會(huì)阻斷setTimeout的原理,在選擇文件后獲取file input的值。由于ie6中文件選擇對(duì)話框并不能阻斷setTimeout,無(wú)法在選擇文件后及時(shí)獲取到文件路徑,所以無(wú)法對(duì)ie6進(jìn)行美化。ie9既支持click事件,也支持change事件。ff和chrome只支持change事件,change事件在文件選擇之后觸發(fā)。
選擇文件后,就可以進(jìn)行同步或者異步的文件上傳了。
相關(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利用label標(biāo)簽和CSS美化文件上傳表單(不兼容IE6)
文件上傳類型表單是一個(gè)讓很多前端開(kāi)發(fā)者糾結(jié)過(guò)的表單類型,因?yàn)樗且粋€(gè)無(wú)法單純用CSS給它定義兼容的樣式。2011-06-20- 表單上傳文件的“瀏覽”按鈕修改代碼,需要的朋友可以參考下。2011-05-03
- 這篇文章主要介紹了使用css畫(huà)一個(gè)文件上傳圖案效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-12-16