2017-01-27 16 views
0

私のナビゲーションバーにスクロール効果があります。スクロールが140より大きい場合、別のナビが表示され、140より小さい場合は透明なナビゲーションバーが表示されます。私はcomponentDidMountライフサイクル内にスクロール機能を実装しました。スクロールエフェクトは機能しますが、エクスペクトされません。私は効果を見るために何度も下にスクロールする必要があり、140以上にスクロールして再びスクロールすると、まだ透明なnavbarで着色されたnavbarが表示されます。スクロールが期待どおりに機能していない

は、ここでは、スクロールバーが一番上にあり、色のナビゲーションバーが表示されている見ることができます私のコード

class Navbar extends React.PureComponent { 
    componentDidMount() { 
    window.addEventListener('scroll', this.handleScrolling.bind(this)); 
    } 

    handleScrolling(e) { 
    let scrollTop = e.srcElement.body.scrollTop; 
    if (scrollTop > 140) { 
     if (this.el.className.indexOf("open") === -1) { 
     console.log('not open'); 
     this.el.classList.add("open"); 
     } else { 
     if (this.el.className.indexOf("open") > -1) { 
      console.log('closed'); 
      this.el.classList.remove("open"); 
     } 
     } 
    } 
    } 
    render() { 
    return (
    <div className="navbar navbar-inverse navbar-fixed-top" ref={(el) => this.el = el}> 
     <div className="container"> 
     <div className="navbar-header"> 
      <button type="button" className="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
      <span className="icon-bar"></span> 
      <span className="icon-bar"></span> 
      <span className="icon-bar"></span> 
      </button> 
      <a className="logo" href="index.html"><img src={logo} alt="Logo" /></a> 
     </div> 
     <div className="navbar-collapse collapse"> 
      <ul className="nav navbar-nav navbar-right"> 
      <li><a href="#home" className="scroll">HOME</a></li> 
      <li><a href="#">DRIVER</a></li> 
      <li><a href="#">BRAND</a></li> 
      <li><a href="#">JOIN NOW</a></li> 
      <li><a href="#">SIGN IN</a></li> 
      </ul> 
     </div> 
     </div> 
    </div> 
); 
} 
} 

export default Navbar; 

です。それは私が底から上にスクロールしているときです。ここで

のindexOfのチェックを外すスクリーンショット

enter image description here

答えて

0

は、問題を解決しますが、私はなぜ知りませんさ。誰も私を説明することはできますか?

関連する問題