jquery 滾動條 scroll 和 animate出現的問題總結


這兩天剛剛學習了jquery就想把平時做看到的一些相關效果用新的知識寫寫看。知識平時看着都懂,實際操作中問題才會層出不窮。

<!DOCTYPE html>
<html>
<head>

<style>
    *{
        margin: 0;
        padding: 0;
    }
    .result{
        width: 100%;
        height: 50px;
        background: #ccc;
        position: fixed;
        top: -50px;
    }

</style>

<script src="//cdn.bootcss.com/jquery/3.1.0/jquery.slim.min.js"></script>

</head>


<body style="height:4500px;">
    <div class="result"></div>
<script>

//出現問題: 1、每次scroll都使動畫反復觸發,解決這個問題使用動畫的 stop(),
//              這個方法主要是為了停止所有指定元素上運行的動畫
//              兩個參數,第一個參數刪除隊列動畫,第二參數是讓當前正在執行的動畫立即完成,並且
//              重設show和hide的原始延時,調用回調函數,示例:
//              $("#div").stop(); 停止當前動畫,繼續下一個動畫
//              $("#div").stop(true) 停止元素的所有的動畫
//              $("#div").stop(false, true) 讓當前動畫直接到達末狀態,繼續下一個動畫
//              $("#div").stop(true, true) 清楚所有動畫,讓當前動畫直接到達末尾狀態
//              到這一步能基本解決問題了,但是觀察效果的時候發現進入動畫的時候還是
//              有點卡頓的問題。主要原因在下面。
//           
//           2、第二個問題也是因為scroll每次觸發會引起上百次的操作,為了優化操作,網友提示
//              使用節流閥,不然scroll每次都在觸發。節約資源,其中提供了
//              https://segmentfault.com/a/1190000002764479 函數防抖與節流的優秀文章。
//              
$(function(){
     
    var fs = true;
        
    $(window).scroll(function(event) {

        if( $(window).scrollTop() > 50 ){
            
            if(fs){
                
                $(".result").stop().animate({
                    top: 0
                },300);

                fs = false;
            }
        }
        else{

            $(".result").stop().animate({
                top: "-50px"
            },300);

            fs = true;
        }
    });
 });
</script>

</body>
</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM