vue元素进入可视区域触发动画

思路就是通过 vue.directive 来创建一个自定义指令 在指令中监听元素是否进入可视区域,进入可视区域后给元素添加相应的css类 。

//在main.js添加下面代码

//监听元素是否进入视图
Vue.directive('appear-animation', {
  bind(el, binding) {
    const options = binding.value || {};

    let hasEntered = false; // 用于追踪元素是否已经进入视图

    // sjhaihbd-in
    const observer = new IntersectionObserver(entries => {
      entries.forEach(entry => {
        if (entry.isIntersecting && !hasEntered) {
            // 元素进入视图,添加CSS类触发动画
            el.classList.add(options.appearClass || 'slide-in');
            hasEntered = true; // 更新状态
          
        } else if (!entry.isIntersecting && hasEntered) {
          // 元素离开视图,移除CSS类
          el.classList.remove(options.appearClass || 'slide-in');
          hasEntered = false; // 更新状态
        }
      });
    }, options.intersectionOptions || {});

    observer.observe(el);
  },
});
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值