欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

文件上傳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)文章

最新評(píng)論