js自定義input文件上傳樣式
文件上傳是我們經(jīng)常會(huì)用到的功能,但是原生的input樣式太丑了,能不能自定義一個(gè)input文件上傳樣式呢?
我這里寫(xiě)了兩種方法,form表單提交跟ajax異步提交都沒(méi)有問(wèn)題,自動(dòng)上傳或者點(diǎn)擊上傳按鈕上傳也都沒(méi)問(wèn)題
先看效果:
代碼貼出來(lái):
方法1
<!-- 方法1: div : 設(shè)置寬高、overflow:hidden;超出的部分被隱藏 input : 設(shè)置層級(jí)z-index = 1;設(shè)置透明度opacity:0;設(shè)置相對(duì)定位position:relative;使兩個(gè)元素重疊 i : 設(shè)置層級(jí)z-index = 0;(要比input?。┰O(shè)置相對(duì)定位position:relative;使兩個(gè)元素重疊 利用div框出大小,input在i上面但透明度為0,當(dāng)我們點(diǎn)擊i時(shí)其實(shí)是點(diǎn)擊到了input但視覺(jué)上我們只看到了i --> <h3>方法1:</h3> <form action="upload" method="post" enctype="multipart/form-data"> <!-- 輔助div,框出顯示內(nèi)容 --> <div style="width: 20px;height: 20px;overflow:hidden;"> <!-- 實(shí)際的選擇文件input --> <input style="position:relative;z-index :1;opacity:0" onchange="change()" id="file" type="file" name="file"/> <!-- 可視圖標(biāo) --> <i class="glyphicon glyphicon-open" style="position:relative;top:-22px;z-index :0;font-size: 20px;"></i> </div> <!-- 文件名 --> <br/><span id="fileName"></span> <!-- 表單提交按鈕 --> <br/><input id="but_submit" type="submit" value="上傳"/> </form> <script> function change() { //回顯文件名 $("#fileName").text($("#file").val()); } </script>
方法2
<!-- 方法2: input : 設(shè)置層級(jí)display: none; 直接隱藏 i : onclick="document.getElementById('file2').click();" 圖標(biāo)的click觸發(fā)input的click 直接隱藏input,設(shè)置圖標(biāo)的click觸發(fā)input的click,從而達(dá)到我們想要的效果 --> <h3>方法2:</h3> <form id="uploadForm"> <!-- 實(shí)際的選擇文件input --> <input style="display: none;" onchange="change2()" id="file2" type="file" name="file"/> <!-- 可視圖標(biāo) --> <i class="glyphicon glyphicon-open" style="font-size: 20px;" onclick="document.getElementById('file2').click();"></i> <!-- 文件名 --> <br/><span id="fileName2"></span> </form> <script> //自動(dòng)上傳 function change2() { //回顯文件名 $("#fileName2").text($("#file2").val()); //執(zhí)行上傳 var form = new FormData(document.getElementById("uploadForm")); $.ajax({ url: ctx + "/rack/upload", type: "post", data: form, processData: false, contentType: false, success: function (data) { console.log(data); }, error: function (e) { console.log(e); } }); } </script>
controller
@PostMapping("upload") public ResultModel<Boolean> upload(MultipartFile file) { //文件名 System.out.println(file.getOriginalFilename()); return ResultModel.of(true); }
樣式還是丑了一點(diǎn),但這些都不重要,關(guān)鍵是掌握了方法再找個(gè)UI小姐姐來(lái)幫忙調(diào)試,就可以做出任何想要的UI效果啦!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jQuery/JS監(jiān)聽(tīng)input輸入框值變化實(shí)例
- 原生javascript自定義input[type=radio]效果示例
- js實(shí)現(xiàn)input密碼框顯示/隱藏功能
- js限制input只能輸入有效的數(shù)字(第一個(gè)不能是小數(shù)點(diǎn))
- vue.js項(xiàng)目 el-input 組件 監(jiān)聽(tīng)回車(chē)鍵實(shí)現(xiàn)搜索功能示例
- vuejs 動(dòng)態(tài)添加input框的實(shí)例講解
- vue.js input框之間賦值方法
- JavaScript如何判斷input數(shù)據(jù)類(lèi)型
相關(guān)文章
uniapp實(shí)現(xiàn)橫向滾動(dòng)選擇日期
這篇文章主要為大家詳細(xì)介紹了uniapp實(shí)現(xiàn)橫向滾動(dòng)選擇日期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10打開(kāi)新窗口關(guān)閉當(dāng)前頁(yè)面不彈出關(guān)閉提示js代碼
打開(kāi)新窗口關(guān)閉當(dāng)前頁(yè)面時(shí)總是彈出提示框,有沒(méi)有辦法避免它的彈出呢,答案是可以的接下來(lái)為大家分享一個(gè)方法可以解決此問(wèn)題,感興趣的你可不要錯(cuò)過(guò)了哈,希望可以幫助到你2013-03-03小程序瀑布流組件實(shí)現(xiàn)翻頁(yè)與圖片懶加載
這篇文章主要介紹了小程序瀑布流組件實(shí)現(xiàn)翻頁(yè)與圖片懶加載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Echarts基本用法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Echarts基本用法,詳解的介紹了Echarts的基本用法和實(shí)例,有興趣的可以了解一下2017-08-08通過(guò)JavaScript使Div居中并隨網(wǎng)頁(yè)大小改變而改變
自己的頁(yè)面太難看了,要居中沒(méi)居中,要顏色沒(méi)顏色,但是無(wú)論是怎么樣都得使登錄的框居中吧,下面與大家分享下通過(guò)JavaScript可以簡(jiǎn)單的使Div在頁(yè)面上居中,隨著網(wǎng)頁(yè)大小的改變做出相應(yīng)的改變2013-06-06利用JavaScript實(shí)現(xiàn)仿京東放大鏡效果
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)仿京東放大鏡特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03