前言:
前端透過 AJAX 呼叫 API 時,在等待資料回傳時為了增加使用者體驗效果,我們可以在傳輸資料這段時間增加遮罩效果,讓使用者不能操作其他功能、同時增加使用者回饋效果。
參考資料:
[Day 06]loader.css - 就算loading中,也要很美觀才行
- 我們需要一個
div
,來製造出遮罩範圍
1 2 3 4 5
| // HTML部分 <div class="loading"> <div class="loader-inner ball-pulse"></div> //這邊 Class 是引用 loader.css class </div>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| .loading { background-color: black; opacity: 0.5; position: absolute; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 999; animation: closeLoading 3s 1 ease-out forwards; @keyframes closeLoading { 0% { opacity:1 } 50% { opacity: 0.5; } 100% { opacity: 0; } } }
|
- 我們需要替遮罩增加旋轉效果
1 2
| 因為我們有使用套件,所以可以直接使用 $('.loader-inner').loaders();
|
- 完整程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| async function exportExcel(url, postData) { $("#body").prepend(`<div class="loading"> <div class="loader-inner ball-pulse"> </div> </div>`) $('.loader-inner').loaders(); await axios.post(url, postData, { responseType: 'blob' }).then((res) => { ..... 程式碼執行 }).catch((error) => { if (error.response) { alert(error.response.data); } else { alert(error.message); } }); $(".loading").remove();
}
|