CSS
- Tags:: #🗺️
- Topics:: FrontEnd
網頁載入直線進度範例
/* 進度條容器 */
#progress-bar-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 3px; /* 進度條高度 */
background: transparent; /* 容器背景透明 */
z-index: 9999;
}
/* 進度條本體 */
#progress-bar {
height: 100%;
width: 0; /* 初始進度為 0% */
background: #29d; /* 進度條顏色 */
transition: width 0.3s ease-out, opacity 0.5s ease-in; /* 寬度和淡出效果 */
will-change: width, opacity; /* 提升動畫性能 */
}
<div id="progress-bar-container">
<div id="progress-bar"></div>
</div>
const ProgressBar = (() => {
const progressBar = document.getElementById('progress-bar');
let progress = 0; // 當前進度
return {
// 開始進度條
start() {
progressBar.style.width = '0%';
progressBar.style.opacity = '1';
progress = 0;
},
// 更新進度條到指定百分比
set(value) {
progress = Math.min(value, 100); // 進度不得超過 100%
progressBar.style.width = progress + '%';
},
// 完成進度條
finish() {
progress = 100;
progressBar.style.width = '100%';
setTimeout(() => {
progressBar.style.opacity = '0'; // 淡出進度條
}, 500); // 延遲隱藏以確保用戶看到完成效果
},
// 重置進度條
reset() {
progressBar.style.width = '0%';
progressBar.style.opacity = '0';
progress = 0;
},
};
})();
document.addEventListener('DOMContentLoaded', () => {
ProgressBar.start(); // 開始進度條
let simulatedProgress = 0;
// 模擬進度更新
const interval = setInterval(() => {
simulatedProgress += 10;
ProgressBar.set(simulatedProgress);
if (simulatedProgress >= 100) {
//clearInterval(interval); // 停止模擬
//ProgressBar.finish(); // 完成進度條
}
}, 100);
});
window.addEventListener('load', () => {
setTimeout(function () {
ProgressBar.set(100);
ProgressBar.finish();
}, 300);
});
其他