前端写一段代码要求能够在页面顶部显示加载进度条再加一个全屏遮罩遮罩中间添加一个圆形的加载进度圈要求这些加载都有动效
以下是一个使用HTML、CSS和JavaScript实现的简单示例代码:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Loading Progress</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="loading-screen">
<div class="loading-bar"></div>
</div>
<div class="overlay"></div>
<script src="script.js"></script>
</body>
</html>
CSS:
/* 遮罩层样式 */
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9999;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
}
.overlay.active {
opacity: 1;
visibility: visible;
}
/* 圆形进度条样式 */
.loading-screen {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 5px;
background-color: transparent;
z-index: 99999;
}
.loading-bar {
width: 0%;
height: 100%;
background-color: #00bcd4;
transition: width 0.3s ease-in-out;
}
/* 全屏遮罩中间的圆形进度圈样式 */
.spinner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 60px;
height: 60px;
border-radius: 50%;
border-top: 4px solid #00bcd4;
border-right: 4px solid transparent;
animation: spin 1s linear infinite;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
}
.spinner.active {
opacity: 1;
visibility: visible;
}
@keyframes spin {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg);
}
}
JavaScript:
window.addEventListener('load', function() {
var overlay = document.querySelector('.overlay');
var spinner = document.querySelector('.spinner');
var loadingBar = document.querySelector('.loading-bar');
var loadingScreen = document.querySelector('.loading-screen');
/* 隐藏进度条和遮罩层 */
function hideLoadingScreen() {
overlay.classList.remove('active');
spinner.classList.remove('active');
loadingScreen.classList.remove('active');
}
/* 显示进度条和遮罩层 */
function showLoadingScreen() {
overlay.classList.add('active');
spinner.classList.add('active');
loadingScreen.classList.add('active');
}
/* 监听Ajax请求开始事件 */
document.addEventListener('ajaxStart', function() {
loadingBar.style.width = '0%';
showLoadingScreen();
});
/* 监听Ajax请求完成事件 */
document.addEventListener('ajaxStop', function() {
loadingBar.style.width = '100%';
setTimeout(hideLoadingScreen, 500); // 延迟一定时间后再隐藏,以显示完整的进度条动画
});
});
这段代码使用了事件监听的方式来实现加载进度条和遮罩的显示和隐藏。当页面加载完成后,通过window.addEventListener('load', function() {...})来监听页面的load事件,然后获取需要操作的DOM元素,并定义了显示和隐藏进度条和遮罩的函数。在document对象上监听ajaxStart和ajaxStop事件,在请求开始时显示进度条和遮罩,请求完成后隐藏进度条和遮罩。进度条的宽度通过修改loading-bar元素的width属性来控制,进度圈的动画效果通过CSS的@keyframes定义实现。
原文地址: https://www.cveoy.top/t/topic/b5Y9 著作权归作者所有。请勿转载和采集!