在a标签点击后会有短暂的动画效果, 类似 loading, 动画结束后再跳转页面, 有什么方法能实现这样的功能?
提供一个js的思路,动画就自己写吧。
const el = document.querySelector('a')
el.addEventListener('click', function(e){
if(e.isTrusted){
e.preventDefault();
setTimeout(()=> this.click(), 1000)
}
})
用其他标签写一个按钮注册click,在click事件里加上1秒钟定时器就可以
<button id="myButton">Click me</button>
<script>
const button = document.querySelector('#myButton');
button.addEventListener('click', () => {
setTimeout(() => {
console.log('1 秒钟的定时器已经结束了');
}, 1000);
});
</script>
还方便
补充一个
$('a').click(function() {
// ... 停留期间需要执行的函数 ...
setTimeout(function() {
location.href = $(this).attr('href');
}, 1000)
return false;
})
要实现在点击 标签后显示短暂的加载动画,然后再跳转到另一个页面,你可以使用 JavaScript(或 jQuery)和 CSS 来实现这个功能。
首先,创建一个简单的加载动画效果:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>带有加载动画的跳转</title>
<style>
.loader {
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
border-radius: 50%;
width: 40px;
height: 40px;
animation: spin 2s linear infinite;
display: none;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
</style>
</head>
<body>
<a href="https://www.example.com" id="myLink">点击这里跳转</a>
<div class="loader" id="loader"></div>
<script>
const myLink = document.getElementById('myLink');
const loader = document.getElementById('loader');
myLink.addEventListener('click', (e) => {
e.preventDefault(); // 阻止<a>标签的默认行为
loader.style.display = 'inline-block'; // 显示加载动画
setTimeout(() => {
window.location.href = myLink.href; // 在动画结束后跳转到目标页面
}, 2000); // 设置动画持续时间,例如这里设置为 2 秒
});
</script>
</body>
</html>
在这个例子中,使用 CSS 创建一个简单的加载动画。然后,使用 JavaScript 监听 标签的点击事件。当用户点击链接时,我们阻止默认的跳转行为,显示加载动画,然后在指定的时间(例如 2 秒)后跳转到目标页面。
你可以根据需要自定义动画效果和持续时间。如果你熟悉 jQuery,也可以使用 jQuery 实现相同的功能。
您可以使用以下代码:
首先,确保在您的HTML文件中引入jQuery库。在这个例子中,使用一个简单的淡入淡出效果作为加载动画。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>带有加载动画的跳转 - jQuery</title>
<style>
#loader {
width: 40px;
height: 40px;
background-color: #3498db;
display: none;
opacity: 0;
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<a href="https://www.example.com" id="myLink">点击这里跳转</a>
<div id="loader"></div>
<script>
$(document).ready(function () {
const myLink = $('#myLink');
const loader = $('#loader');
myLink.on('click', function (e) {
e.preventDefault(); // 阻止<a>标签的默认行为
loader.fadeIn(500, function () { // 使用淡入效果显示加载动画
setTimeout(function () {
loader.fadeOut(500, function () { // 使用淡出效果隐藏加载动画
window.location.href = myLink.attr('href'); // 在动画结束后跳转到目标页面
});
}, 2000); // 设置动画持续时间,例如这里设置为 2 秒
});
});
});
</script>
</body>
</html>
在这个例子中,使用了jQuery的fadeIn()和fadeOut()函数来创建一个淡入淡出的加载动画效果。我们依然使用事件监听器来监听标签的点击事件,阻止默认的跳转行为,然后在指定的时间后跳转到目标页面。这里的动画效果和持续时间也可以根据需要进行自定义。
无论选择使用原生JavaScript还是jQuery,关键是使用事件监听器来捕获标签的点击事件,阻止其默认行为,然后在适当的时机执行页面跳转。
想接单找我
阻止a标签点击事件的默认跳转行为,加入定时器延时一秒后再手动跳转:
<a href="https://segmentfault.com" id="link">链接</a>
var link = document.getElementById("link");
link.addEventListener("click", function(e) {
e.preventDefault();
setTimeout(function() {
window.open(e.target.href);
}, 1000);
});
用其他行内标签结合css样式来模拟a标签的行为:
<span id="link">链接</span>
#link {
color: blue;
cursor: pointer;
text-decoration: underline;
}
.active {
color: red !important;
}
var link = document.getElementById("link");
link.addEventListener("mousedown", function(e) {
e.target.classList.add("active");
document.addEventListener("mouseup", function mouseup() {
e.target.classList.remove("active");
document.removeEventListener("mouseup", mouseup);
});
});
link.addEventListener("click", function(e) {
setTimeout(function() {
window.open("https://segmentfault.com");
e.target.style.color = "purple";
}, 1000);
});
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
如楼上所说,只能js劫持一下点击事件