css 实现页面渐隐过场动画
时间: 2023-08-28 19:08:15 浏览: 186
可以使用 CSS3 的过渡(transition)和透明度(opacity)属性来实现页面渐隐过场动画。具体步骤如下:
1. 在 CSS 中设置页面的初始透明度为 1,即完全不透明。
```
body {
opacity: 1;
}
```
2. 定义一个 CSS 类,设置页面透明度为 0,即完全透明,并且添加过渡效果。
```
.fade-out {
opacity: 0;
transition: opacity 1s ease-in-out;
}
```
3. 使用 JavaScript 监听页面跳转事件(如点击链接或提交表单),在页面跳转时添加 fade-out 类。
```
document.addEventListener("DOMContentLoaded", function() {
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
links[i].addEventListener("click", function(event) {
event.preventDefault();
document.body.classList.add("fade-out");
setTimeout(function() {
window.location.href = event.target.href;
}, 1000);
});
}
});
```
在上面的代码中,我们使用了 setTimeout 函数来延迟页面跳转,等待页面渐隐动画结束后再进行跳转。
4. 过渡结束后,移除 fade-out 类,使页面重新变为不透明状态。
```
body.fade-out {
opacity: 0;
}
body.fade-out .wrapper {
visibility: hidden;
}
body:not(.fade-out) .wrapper {
visibility: visible;
opacity: 1;
transition: opacity 1s ease-in-out;
}
```
在上面的代码中,我们使用了 :not 伪类来判断页面是否处于渐隐状态,如果不是,则添加一个新的过渡效果,使页面重新变为不透明状态。
完整的代码如下:
```
<style>
body {
opacity: 1;
}
.fade-out {
opacity: 0;
transition: opacity 1s ease-in-out;
}
body.fade-out {
opacity: 0;
}
body.fade-out .wrapper {
visibility: hidden;
}
body:not(.fade-out) .wrapper {
visibility: visible;
opacity: 1;
transition: opacity 1s ease-in-out;
}
.wrapper {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
</style>
<body class="fade-out">
<div class="wrapper">
<h1>Hello, World!</h1>
<p><a href="page2.html">Go to Page 2</a></p>
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
links[i].addEventListener("click", function(event) {
event.preventDefault();
document.body.classList.add("fade-out");
setTimeout(function() {
window.location.href = event.target.href;
}, 1000);
});
}
});
</script>
</body>
```
注意:以上代码中的 .wrapper 可以替换为任何需要渐隐过场动画的元素。
阅读全文