打造炫酷前端進度條:圓環效果與鼠標提示
前端進度條的實現看似簡單,但要兼顧美觀和功能性,則需要一些技巧。本文將探討如何創建一個帶有圓環效果和鼠標懸停提示信息的自定義進度條。
首先,我們需要實現一個進度條,其核心元素包含一個中間的圓環和鼠標懸停提示。 本文將采用純原生JavaScript、css和html的方式,而非依賴特定ui框架,以提供更高的靈活性。
挑戰與解決方案
-
圓環效果的實現: 直接在現有組件中插入節點可能存在兼容性問題或限制。因此,我們選擇通過CSS樣式和HTML結構來構建圓環。
-
鼠標懸停提示: 這需要使用JavaScript監聽mousemove事件,并動態生成或更新提示信息。
立即學習“前端免費學習筆記(深入)”;
實現步驟及代碼示例
- HTML結構: 創建一個包含進度條和圓環的容器。
<div class="progress-container"> <div class="progress-bar"></div> <div class="progress-circle"></div> </div>
- CSS樣式: 定義進度條、圓環和容器的樣式。
.progress-container { width: 200px; /* 可調整寬度 */ height: 20px; background-color: #f0f0f0; position: relative; /* 為絕對定位的圓環提供參考 */ } .progress-bar { height: 100%; background-color: #4CAF50; /* 可自定義顏色 */ } .progress-circle { width: 15px; /* 圓環大小 */ height: 15px; background-color: white; border: 2px solid #4CAF50; border-radius: 50%; position: absolute; right: 0; /* 圓環位置 */ top: 2.5px; /* 垂直居中調整 */ }
- JavaScript動態更新: 使用JavaScript動態調整進度條寬度并處理鼠標事件。
const progressBar = document.querySelector('.progress-bar'); const progressContainer = document.querySelector('.progress-container'); let progress = 0; // 初始進度 function updateProgress(newProgress) { progress = Math.min(100, Math.max(0, newProgress)); // 保證進度在0-100之間 progressBar.style.width = `${progress}%`; } progressContainer.addEventListener('mousemove', (e) => { const rect = progressContainer.getBoundingClientRect(); const x = e.clientX - rect.left; const calculatedProgress = (x / rect.width) * 100; updateProgress(calculatedProgress); // 實時更新進度 // 顯示提示信息 (可以使用 tooltip 庫或自定義提示框) const tooltip = document.createElement('div'); tooltip.classList.add('tooltip'); tooltip.textContent = `${calculatedProgress.toFixed(0)}%`; tooltip.style.left = `${x}px`; tooltip.style.top = `${rect.bottom + 5}px`; // 提示框位置 document.body.appendChild(tooltip); }); progressContainer.addEventListener('mouseout', () => { // 移除提示信息 const tooltip = document.querySelector('.tooltip'); if (tooltip) { document.body.removeChild(tooltip); } }); // 示例:模擬進度變化 setInterval(() => { updateProgress(progress + 5); }, 1000); // 每秒增加5%進度
記得添加tooltip的樣式:
.tooltip { position: absolute; background-color: #333; color: white; padding: 5px 10px; border-radius: 5px; opacity: 0.9; pointer-events: none; /* 防止遮擋鼠標事件 */ }
這段代碼實現了基本的進度條和圓環效果,以及鼠標移動時的進度更新和提示信息顯示。您可以根據實際需求調整CSS樣式和JavaScript邏輯,例如添加動畫效果、更精細的提示信息等。 記住,為了更好的用戶體驗,可以考慮使用更成熟的tooltip庫來處理提示信息。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END