js滑屏加载特效!

首先是html

原理是要用到animate.css这个css 具体可以随便到哪里下载! 然后引入即可!

<div class="main">
  <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>
                <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>
                <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>
                <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>
                <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>
                <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>
                <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>
                <p class="ani bounceInLeft">左边进入</p>
                <p class="ani bounceInDown">下面进入</p>
                <p class="ani bounceInRight">右面进入</p>
                <p class="ani bounceInUp">上面进入</p>
                <p class="ani flash">闪亮</p>
                <p class="ani shake">摇动</p>
                <p class="ani flip">翻转</p>
                <p class="ani lightSpeedIn">移动进入</p>

</div>


然后是html 每个都需要增加一个固定ani属性!

让后我们把需要运动的属性隐藏,visibility属性!不是display; display是不会有效果的!

    anis = document.querySelectorAll('.ani');//获取所有的class然后把class备份!再取消class并隐藏!
       for(i=0;i<anis.length;i++){
           anis[i].style.visibility ='hidden' ;
           anis[i].classCache=anis[i].className;
           anis[i].className ='';
       }

然后我们就需要在滑动的时候加载

$(window).scroll(function() {
checkScroll();
}

加载的js

var xh_hei = $(window).height();

function checkScroll() {
    _wrapperTranslate = $(document).scrollTop();
    for (i = 0; i < anis.length; i++) {
        const top = $(anis[i]).offset().top
        if (top < (_wrapperTranslate + xh_hei - 50) && anis[i].style.visibility == 'hidden') {
            anis[i].style.visibility = 'visible';
            anis[i].className = "" + anis[i].classCache + " " + 'animated';
        }
    }
}

这样滚动的时候就可以了! 但是这样的话就会有个情况,初始的第一屏不滚动不会加载那么我们可以先默认执行一遍

checkScroll();

好了试下吧!

完整js文件,需要引入jq

anis = document.querySelectorAll('.ani');
for (i = 0; i < anis.length; i++) {
    anis[i].style.visibility = 'hidden';
    anis[i].classCache = anis[i].className;
    anis[i].className = '';
}
var xh_hei = $(window).height();

function checkScroll() {
    _wrapperTranslate = $(document).scrollTop();
    for (i = 0; i < anis.length; i++) {
        const top = $(anis[i]).offset().top
        if (top < (_wrapperTranslate + xh_hei - 50) && anis[i].style.visibility == 'hidden') {
            anis[i].style.visibility = 'visible';
            anis[i].className = "" + anis[i].classCache + " " + 'animated';
        }
    }
}
checkScroll();
$(window).scroll(function () {

    checkScroll();
})

image.png

其他小方法

    <script>
        $(window).scroll(function () {
            var top = $('.member-power-bj').offset().top
            var windowsHeight = $(window).height();
            var _wrapperTranslate = $(document).scrollTop();

            var size = windowsHeight + _wrapperTranslate - top - (windowsHeight / 2)
            console.log(size)

            if (size > 0 && size < 3600) {
                console.log(size)

                document.querySelector('.member-power-bj').style.transform = "rotate(" + size / 10 + "deg)";

            }
        })
    </script>


相关内容

发表评论

验证码:
点击我更换图片

最新评论