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

文件上傳input在各個瀏覽器里表現(xiàn)形式都不一樣,這里通過css樣式控制,盡量在多瀏覽器中的表現(xiàn)都一樣
文件上傳input在各個瀏覽器里表現(xiàn)形式都不一樣:
ie6
ie7,8,9
ff
chrome
這里介紹一種簡單實用的,在各種瀏覽器下表現(xiàn)一致的美化方法,效果如下:
ie6無法美化,只能應(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置于右邊,從而使點擊選擇文件按鈕時可以點擊到file input。
js主要作用是選擇文件后將路徑顯示在文本框中。
- ie7,8只支持file input的click事件,在點擊file input時觸發(fā),然后利用ie7,8中選擇文件對話框出現(xiàn)時會阻斷setTimeout的原理,在選擇文件后獲取file input的值。由于ie6中文件選擇對話框并不能阻斷setTimeout,無法在選擇文件后及時獲取到文件路徑,所以無法對ie6進行美化。ie9既支持click事件,也支持change事件。ff和chrome只支持change事件,change事件在文件選擇之后觸發(fā)。
選擇文件后,就可以進行同步或者異步的文件上傳了。
相關(guān)文章
css input[type=file] 樣式美化(input上傳文件樣式 )
這篇文章主要介紹了css input[type=file] 樣式美化(input上傳文件樣式 )的相關(guān)資料,需要的朋友可以參考下2018-06-20基于jQuery+CSS3實現(xiàn)帶動畫效果文件上傳插件特效源碼
基于jQuery+CSS3實現(xiàn)帶動畫效果文件上傳插件特效源碼是一款基于jQuery+CSS3實現(xiàn)的上傳界面,支持文件拖到上傳動畫代碼。本段特效源碼可以在各大網(wǎng)站使用,有需要的朋友直接2017-07-10HTML5+CSS3實現(xiàn)無插件拖拽上傳圖片(支持預(yù)覽與批量)
本篇文章主要介紹了HTML5+CSS3實現(xiàn)無插件拖拽上傳圖片(支持預(yù)覽與批量),現(xiàn)在html5提供了API以及File,F(xiàn)ileReader,XMLHttpRequest等強大的API,為我們拖放實現(xiàn)上傳提供2017-01-05- 文件上傳類型表單是一個讓很多前端開發(fā)者糾結(jié)過的表單類型,因為它是一個無法單純用CSS給它定義兼容的樣式。2011-06-20
- 表單上傳文件的“瀏覽”按鈕修改代碼,需要的朋友可以參考下。2011-05-03
- 這篇文章主要介紹了使用css畫一個文件上傳圖案效果,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧2019-12-16