(第二阶段)IntersectionObserver页面优化 实现动画class的添加移除

进一步使用IntersectionObserver对动画进行优化

01.回顾上一阶段 记录动画的具体值然后判断进行赋值

https://blog.csdn.net/WangHaiLongWang/article/details/106556538

02.现在阶段目标实现: 记录动画的class ,进行动态移除和添加class

废话不多说上代码

	// 定义函数
    functionIntersectionObserver(el) {
      //获取包含动画的class名称
      let arrList = $(el);
      //定义将要存储的class动画名称
      let className = "";
      //调用IntersectionObserver创建实例
      var intersectionObserver = new IntersectionObserver(function(entries) {
        // 获取到想要取消动画的元素
        let elementS = entries[0].target;
        // 判断className是否为第一次声明和赋值  要求只赋值一次
        if (!className) {
          let classLIst = elementS.getAttribute("class").split(" ");
          className = classLIst.filter((item, index) => {
          	//匹配到包含move_的class  动画所在的class 将要动态移除和添加这个类名
            if (item.match("move_")) {
              return item;
            }
          });
        }
        // 当元素所处在视图中
        if (entries[0].isIntersecting) {
          elementS.classList.add(...className);
        }
        // 当元素所出与视图外面
        else {
          new Promise((resolve, reject) => {
            resolve("成功");
          }).then(res => {
            elementS.classList.remove(...className);
          });
        }
      });
      // 遍历所有元素,进行监听
      arrList.each((index, item) => {
        intersectionObserver.observe(item);
      });
    }

总结

  • 1.要求拥有的动画的class名称 一定要有规范 比如以move_开头 (本文中使用到的 item.match(“move_”)) 就是来匹配move_的class动画名称 ,你使用的时候可以按照自己的规范
  • 2.classname要求记载的class动画名只记录一次,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值