网友回复
对于chrome Firefox等现代浏览器我们在每个html页面中定义打开和即将跳转的动画,然后实现跳转,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/bootstrap.4.3.1.min.css">
<style>
body {
background-color: #eee;
}
.wrapper {
height: 100vh;
text-align: center;
}
.wrapper button {
position: relative;
top: 50%;
transform: translateY(-50%);
}
.loader {
position: fixed;
z-index: 999;
top: 0;
left: 0;
width: 0;
height: 100vh;
transition: width 0s 1.4s ease;
}
.loader .loader__icon {
position: absolute;
z-index: 1;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
opacity: 0;
transition: opacity 0.5s ease;
}
.loader .loader__icon svg {
transform-origin: 0 0;
}
.loader .loader__tile {
position: absolute;
left: 0;
width: 0;
height: 20%;
background-color: #007AE5;
transition: width 0.7s ease;
}
.loader .loader__tile:nth-child(0) {
top: calc(-1 * 20%);
transition-delay: -0.2s;
}
.loader .loader__tile:nth-child(1) {
top: calc(0 * 20%);
transition-delay: 0s;
}
.loader .loader__tile:nth-child(2) {
top: calc(1 * 20%);
transition-delay: 0.2s;
}
.loader .loader__tile:nth-child(3) {
top: calc(2 * 20%);
transition-delay: 0.4s;
}
.loader .loader__tile:nth-child(4) {
top: calc(3 * 20%);
transition-delay: 0.6s;
}
.loader .loader__tile:nth-child(5) {
top: calc(4 * 20%);
transition-delay: 0.8s;
}
.loader--active {
width: 100%;
transition-delay: 0s;
}
.loader--active .loader__icon {
opacity: 1;
transition: opacity 0.5s 1.4s ease;
}
.loader--active .loader__tile {
width: 100%;
}
.loader--active .loader__tile:nth-child(0) {
transition-delay: -0.2s;
}
.loader--active .loader__tile:nth-child(1) {
transition-delay: 0s;
}
.loader--active .loader__tile:nth-child(2) {
transition-delay: 0.2s;
}
.loader--active .loader__tile:nth-child(3) {
transition-delay: 0.4s;
}
.loader--active .loader__tile:nth-child(4) {
transition-delay: 0.6s;
}
.loader--active .loader__tile:nth-child(5) {
transition-delay: 0.8s;
}
</style>
</head>
<body translate="no">
<div class="loader loader--active">
<div class="loader__icon">
<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
<path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"></path>
<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0C22.32,8.481,24.301,9.057,26.013,10.047z"></path>
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20" dur="0.5s" repeatCount="indefinite"></animateTransform>
</svg>
</div>
<div class="loader__tile"></div>
<div class="loader__tile"></div>
<div class="loader__tile"></div>
<div class="loader__tile"></div>
<div class="loader__tile"></div>
</div>
<div class="wrapper">
<button class="btn" type="button">Toggle page transition</button>
</div>
<script>
var $loader = document.querySelector('.loader');
window.onload = function () {
$loader.classList.remove('loader--active');
};
document.querySelector('.btn').addEventListener('click', function () {
$loader.classList.add('loader--active');
//模拟页面跳转
window.setTimeout(function () {
var openurl = window.location.href;
location.href=openurl;
//$loader.classList.remove('loader--active');
}, 5000);
});
</script...点击查看剩余70%


