ajax上傳文件--按鈕顯示小手


最近開發一個html5 斷點續傳功能,需要自定義一個上傳按鈕,就是不能使用瀏覽器自帶的那個比較丑陋的file標簽當做用戶選擇文件的按鈕,看了下各大網站,發現最好的辦法就是設置file標簽為透明,覆蓋在一個自定義好的按鈕上,使用戶感覺點擊的是自定義按鈕,其實就是點擊的file標簽,使用個定位很容易實現,但問題來了,可點擊的按鈕通常需要顯示小手,給file加個小手樣式,不管用,因為他的瀏覽按鈕前面那部分永遠顯示輸入光標狀態,然后就想到把file的預覽按鈕定位到自定義按鈕上,結果樣式出現了各種頭疼問題,最后還是完美解決了,具體看下面代碼,注意看注釋哦!!!

注意:可能有人會說直接用個自定義標簽被點擊是執行以下一個隱藏file標簽的click方法就ok了,其實這不是很完滿的實現,這樣選擇進去的文件在ie下是沒法通過表單提交到服務端的,由於瀏覽器安全限制,必須是用戶點擊的file標簽選擇的文件才能post到后端。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" charset="utf-8" />
<title>ajax上傳文件--按鈕顯示小手</title>
</head>
<body>
<div style="width:500px;margin:100px auto;">
    <!-- 按鈕相關標簽結構在下面的a標簽中-->
    <a href="javascript:void(0);" style="display:block;width:100px;height:45px;position:relative;overflow:hidden;text-decoration:none;">
        <!--下面的按鈕就是所看到的按鈕-->
        <input type="button" value="上傳" style="width:100px;height:45px;font-size:20px;">
        <!--下面的file標簽設置為完全透明覆蓋在上面的按鈕上,用戶點擊按鈕其實就是點擊的file標簽,為了讓鼠標在按鈕上所有瀏覽器都顯示小手,我們必須把file標簽的預覽按鈕定位到按鈕上,而且要足夠大;注意:這里千萬別給file標簽加width樣式,否則你的小手樣式將無法兼容所有瀏覽器-->
        <input type="file" name="file" style="height:45px;font-size:100px;position:absolute;cursor:pointer;top:0;right:0;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;z-index:2;">
    </a>
    
</div>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM