在 HTML 中实现两个页面之间的转换

implement transition between two pages in HTML

我正在尝试使用此代码在 HTML 中实现两个页面之间的转换,我的问题是我不知道 javascript 的哪个部分指向 html 页面,我点击 link 并得到一个空白屏幕。我希望看到当前页面在 500 秒后淡出,然后新页面以相同的时间淡入,这里是代码

<!DOCTYPE html>
<html>
<body>
 <li class="waves-effect" ><a href="Netbeans_1.html" onclick="transitionToPage('https://www.google.com')">2</a></li>
<script>
window.transitionToPage = function(href) {
    document.querySelector('body').style.opacity = 0
    setTimeout(function() { 
        window.location.href = href
    }, 500)
}

document.addEventListener('DOMContentLoaded', function(event) {
    document.querySelector('body').style.opacity = 1
})
</script>
</body>
<html>

然后在我的 css 文件中,我有这个

body { 
   opacity: 0;
   transition: opacity .5s;
}

第一页淡出很好,但第二页是纯白色请帮忙...

window.transitionToPage = function(href) {
    document.querySelector('body').style.opacity = 0
    setTimeout(function() { 
        window.location.href = href
    }, 500)
}

document.addEventListener('DOMContentLoaded', function(event) {
    document.querySelector('body').style.opacity = 1
})
body { 
   opacity: 0;
   transition: opacity .5s;
}
<li class="waves-effect" ><a href="Netbeans_1.html" onclick="transitionToPage('https://www.google.com')">2</a></li>

唯一的问题是 <a> 的默认行为是立即重定向到 href,如果您删除它并且只在 onclick 事件中调用您的函数,它就可以工作。 (我增加了淡入淡出以显示得更好)。

window.transitionToPage = function(href) {
    document.querySelector('body').style.opacity = 0;
    setTimeout(function() { 
        window.location.href = href;
    }, 2000);
};

document.addEventListener('DOMContentLoaded', function(event) {
    document.querySelector('body').style.opacity = 1;
});
body { 
   opacity: 0;
   transition: opacity 2s;
}
<li class="waves-effect" ><a onclick="transitionToPage('https://www.google.com')">open google</a></li>

编辑:

如果您仍想使用 href 属性,您可以通过在 onclick 事件上返回 false 来覆盖 <a> 标记的默认行为。例如:

window.transitionToPage = function(link) {
    document.querySelector('body').style.opacity = 0;
    setTimeout(function() { 
        window.location.href = link.href;
    }, 2000);
    return false;
};

document.addEventListener('DOMContentLoaded', function(event) {
    document.querySelector('body').style.opacity = 1;
});
body { 
   opacity: 0;
   transition: opacity 2s;
}
<li class="waves-effect" ><a href="https://www.google.com" onclick="return transitionToPage(this)">open google</a></li>