You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现点击URL延迟跳转并保持图片放大状态不缩小?

实现点击图片完成动画后再跳转的方案

纯CSS无法实现这个需求,因为:active状态仅在鼠标按下时生效,松开后就会立刻恢复原状态,而页面跳转是在点击事件完成时触发,两者的时机无法通过CSS同步控制。必须借助JavaScript来拦截默认跳转行为,等待动画完成后再手动触发页面跳转。

具体实现步骤:

  1. 调整HTML结构:确保图片包裹在<a>标签内,并给链接添加自定义类用于监听事件
  2. 修改CSS:将原来的:active状态替换为自定义类,避免状态自动消失
  3. 添加JavaScript逻辑:拦截点击事件,触发动画,延迟后执行跳转

代码示例:

HTML
<a href="你的项目页URL" class="delayed-project-link">
  <img src="图片地址" class="project-zoom" alt="项目预览图">
</a>
CSS
.project-zoom {
    transition: transform 1s, filter 1s ease-in-out;
    margin: 0 auto;
}

/* 用自定义.active类替代:active,保持动画状态 */
.project-zoom.active {
    -ms-transform: scale(10); /* IE 9兼容 */
    -webkit-transform: scale(10); /* Safari 3-8兼容 */
    transform: scale(10);
    filter: blur(2px);
}
JavaScript(原生JS,无需jQuery)
// 给所有目标链接绑定点击事件
document.querySelectorAll('.delayed-project-link').forEach(link => {
  let isAnimating = false; // 防止重复点击触发多次跳转
  link.addEventListener('click', function(e) {
    if (isAnimating) return;
    isAnimating = true;
    
    // 阻止默认跳转行为
    e.preventDefault();
    const targetImg = this.querySelector('.project-zoom');
    
    // 添加类触发动画
    targetImg.classList.add('active');
    
    // 等待动画完成(1秒,和CSS过渡时长一致)后跳转
    setTimeout(() => {
      window.location.href = this.href;
    }, 1000);
  });
});

说明:

  • 自定义类.active会在点击后被添加到图片上,保持放大模糊状态直到页面跳转
  • 定时器的时长要和CSS中transition的时长完全一致,确保动画完整执行
  • 加入isAnimating状态锁可以避免用户在动画过程中重复点击导致的异常

内容的提问来源于stack exchange,提问作者user18735096

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:43:24