feat: add loading screen with fade-out animation
Implement a loading screen that displays while page loads and gracefully fades out after 1.5 seconds. Includes CSS animations and proper cleanup to prevent interaction blocking.
This commit is contained in:
@@ -10,6 +10,11 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
<!-- 加载屏幕 -->
|
||||||
|
<div id="loading-screen">
|
||||||
|
<img src="Bellaicon/Generated image.webp" alt="Loading Bella...">
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 视频背景 -->
|
<!-- 视频背景 -->
|
||||||
<div class="video-container">
|
<div class="video-container">
|
||||||
<video autoplay muted class="bg-video active" id="video1">
|
<video autoplay muted class="bg-video active" id="video1">
|
||||||
|
|||||||
10
script.js
10
script.js
@@ -1,5 +1,15 @@
|
|||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
|
||||||
|
// --- 加载屏幕处理 ---
|
||||||
|
const loadingScreen = document.getElementById('loading-screen');
|
||||||
|
setTimeout(() => {
|
||||||
|
loadingScreen.style.opacity = '0';
|
||||||
|
// 在动画结束后将其隐藏,以防它阻碍交互
|
||||||
|
setTimeout(() => {
|
||||||
|
loadingScreen.style.display = 'none';
|
||||||
|
}, 500); // 这个时间应该匹配 CSS 中的 transition 时间
|
||||||
|
}, 1500); // 1.5秒后开始淡出
|
||||||
|
|
||||||
// 获取需要的 DOM 元素
|
// 获取需要的 DOM 元素
|
||||||
let video1 = document.getElementById('video1');
|
let video1 = document.getElementById('video1');
|
||||||
let video2 = document.getElementById('video2');
|
let video2 = document.getElementById('video2');
|
||||||
|
|||||||
37
style.css
37
style.css
@@ -1,3 +1,40 @@
|
|||||||
|
/* --- 加载屏幕 --- */
|
||||||
|
#loading-screen {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #1a1a1a;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 100;
|
||||||
|
transition: opacity 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loading-screen img {
|
||||||
|
width: 150px; /* 或者您希望的任何尺寸 */
|
||||||
|
height: auto;
|
||||||
|
animation: pulse-loader 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-loader {
|
||||||
|
0% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: scale(1.1);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* --- 基本重置和全局样式 --- */
|
/* --- 基本重置和全局样式 --- */
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user