代码之家  ›  专栏  ›  技术社区  ›  caustic

如何整理这段简短的javascript代码?

  •  1
  • caustic  · 技术社区  · 11 年前

    jsfiddle: http://jsfiddle.net/s1d368ce/

    我试图让三个单独的标题(h1、h2和h3)在用户向下滚动页面时淡出。我希望每个标头的淡出速度比上面的稍慢,所以我的代码有三个部分,如下所示。然而,只有最后一位有效(即h3淡出,但h2和h1不起作用。如果我删除h3的最后一段,则h2淡出,但h1不。如果我移除h3和h2 javascript,则h1淡出。)

    我想知道是否有人能告诉我如何重新组织代码,使其正常工作?

    请看我的代码演示;只有h3的代码有效。但是,如果我要删除javascript代码的“scroll-fade-long-2”部分,那么h2将淡出,而不是h1??

    非常感谢!

    jQuery(function($){		
    //Scroll fade
    		var divs = $('.scroll-fade');
    		$(window).on('scroll', function() {
    			var st = $(this).scrollTop();
    			divs.css({ 
    				'margin-top' : -(st/3)+"px", 
    				'opacity' : 1 - st/135
            		}); 
    		});
    		
    		//Scroll fade long
    		var divs = $('.scroll-fade-long');
    		$(window).on('scroll', function() {
    			var st = $(this).scrollTop();
    			divs.css({ 
    				'margin-top' : -(st/3)+"px", 
    				'opacity' : 1 - st/255
    			}); 
    		});
    
    
    		//Scroll fade long2
    		var divs = $('.scroll-fade-long-2');
    		$(window).on('scroll', function() {
    			var st = $(this).scrollTop();
    			divs.css({ 
    				'margin-top' : -(st/3)+"px", 
    				'opacity' : 1 - st/355
    			}); 
    		});
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <h1 class="scroll-fade">header 1</h1>
    <h2 class="scroll-fade-long">header 2</h2>
    <h3 class="scroll-fade-long-2">header 3</h3>
    
    
    
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    1 回复  |  直到 11 年前
        1
  •  3
  •   kockburn    11 年前

    My demo EDIT:更新不透明度。快速复制粘贴。作品

    您只需拨打 $(window).on('scroll', function(){}); 一旦

    var sf = $('.scroll-fade');
    var sfl = $('.scroll-fade-long');
    var sfl2 = $('.scroll-fade-long-2');
    
    $(window).on('scroll', function(){
        var st = $(this).scrollTop();
        sf.css({
            'opacity' : 1 - st/135,
            'margin-top': -(st/3)+"px"
        });
        sfl.css({
            'opacity' : 1 - st/255,
            'margin-top': -(st/3)+"px"
        });
        sfl2.css({
            'opacity' : 1 - st/355,
            'margin-top': -(st/3)+"px"
        });
    });
    

    另请参阅Miro的紧凑型解决方案: http://jsfiddle.net/ocntm9tx/5/

    $(window).on('scroll', function(){
        var st = $(this).scrollTop();
        for(i=1; i<=3; i++){
            $('.scroll-fade-'+i).css({
                'opacity' : 1 - st/(i*100),
                'margin-top': -(st/3)+"px"
            });
        }
    });