• 页面滚动到可视区域执行操作


    写一个简单的方法,让窗口滚动到可视区域时,即时可以出现动画。

    怎么写动画延迟,直接把类名添加在页面中,实现动画延时。譬如:

    .delay200{animation-delay:200ms}
    .delay500{animation-delay:500ms}
     <h2 class="delay500" data-animate="fadeInUp">回首向来萧瑟处,归去,也无风雨也无晴。</h2>

    css动画参考写法:

    https://daneden.github.io/animate.css

    重点是下面js

    不需要改js复制即用,直接按上面的操作使用"data-animate",里面写动画的类名即可

    /*
    说明:这是一个滚动到可视区域播放动画的插件,当窗口滚动到可视区域时添加ClassName进入动画;
        1.查找页面内所含有[data-animate]的元素,遍历得到他们本身;[data-animate]值为动态获取,需手写animation,
          更多动画效果请访问https://daneden.github.io/animate.css/;
        2.调用函数:计算元素是否到达可视区域 返回Boolean值;
        3.添加有动画的ClassName;
    注意:此方法不能用于ifarm,窗口滚动影响判断
    */
     
    $(function(){
        var windowHeight = $(window).height();  //窗口高度
        var classname;
     
        // 监听页面滚动
        $(window).scroll(function(event){
           // 添加【data-animatie】
           var dataAnimateEl = $('[data-animate]');
           if (dataAnimateEl.length > 0 ) {
            dataAnimateEl.each(function(){
                var element = $(this);                    
                var animation2  = animation1(element);              //调用函数计算是否到达可视区域 返回Boolean
                var annimationVal=element.data("animate");    
                element.css("opacity","0")               
                if (animation2) {
                    element.removeClass(annimationVal).addClass(annimationVal)css("opacity","1");
                }
            })
           }
        });
     
        //函数作用:计算元素是否到达可视区域
        function animation1(classname) {
            var objHeight = $(classname).offset().top;    //元素到顶部的高度
            let winPos = $(window).scrollTop();     //距离顶部滚动 
            let val = objHeight-winPos;        
            if (val<windowHeight && val > 0) {    
            //可视区域                
                // console.log("有动画")
                return true;
            }else {
            //不可视区域
                // console.log("不在可视区域内")
                return false;
            }
        }   
        
    });

     

  • 相关阅读:
    STM32的GPIO工作原理 | 附电路图详细分析
    话说上拉电阻和下拉电阻
    Linux下MySQL数据库常用基本操作
    Linux acpi off学习的必要
    CentOS 6.2出现Disk sda contains BIOS RAID metadata解决方法
    降低开关电源纹波的三个要素
    什么是RFID? 射频识别技术的特点及工作原理!
    亲测可用的国内maven镜像
    Linux 删除文件夹和文件的命令
    [Gradle] 在 Eclipse 下利用 gradle 构建系统
  • 原文地址:https://www.cnblogs.com/Tohold/p/9373256.html
Copyright © 2020-2023  润新知