2015-09-20 271 views
2

http://jsfiddle.net/ncuydr9y/更改背景颜色

BG颜色应该是#1A1A1A上开始滚动,然后PX 210后更改。不知道我哪里错了。

$(document).ready(function(){  
     var scroll_pos = 0; 
     $(document).scroll(function() { 
      scroll_pos = $(this).scrollTop(); 
      if(scroll_pos > 210) { 
       $("#left-panel").css('background-color', '#1A1A1A'); 
      } else { 
       $("#left-panel").css('background-color', 'red'); 
      } 
     }); 
    }); 

回答

2

您需要将滚动事件与id="left-panel"绑定到你的div,因为这是在其上有滚动条的元素(即与overflow: auto元素和子元素比自己大)。

禁止与documentwindow绑定,因为在这种情况下,它们不是滚动条的元素。

工作现场演示:

$(document).ready(function() { 
 
    var scroll_pos = 0; 
 
    $("#left-panel").scroll(function() { 
 
     scroll_pos = $(this).scrollTop(); 
 
     if (scroll_pos > 210) { 
 
      $("#left-panel").css('background-color', '#1A1A1A'); 
 
     } else { 
 
      $("#left-panel").css('background-color', 'red'); 
 
     } 
 
     console.log(scroll_pos); 
 
    }); 
 
});
#left-panel { 
 
    position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    width: 80%; 
 
    height: 100%; 
 
    z-index: 2; 
 
    overflow:auto; 
 
    height:2000px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="left-panel"> 
 
    <div style="height:5000px;">CONTENT</div> 
 
</div>

的jsfiddle版本:http://jsfiddle.net/ncuydr9y/1/

+0

我明白了。谢谢。如何在页面加载开始时将面板变为红色。现在它只是默认的白色。 – user2252219

+0

你可以通过CSS来设置它的红色,如下所示:'#left-panel {background-color:red}'(首选),或者你可以通过在文档顶部复制下面一行来在JavaScript中初始化它: .ready'函数:'$(“#left-panel”).css('background-color','red');'。 –

+0

但是,如果我添加一个转换,它会闪烁。 – user2252219