JQuery - 垂直滚动上的添加/删除类无效

时间:2016-02-28 10:23:08

标签: javascript jquery html css

我正在尝试添加和删除基于垂直滚动(到导航栏)的类,但似乎没有任何效果。

我希望导航栏在滚动时更改背景颜色,我无法理解为什么它没有效果。

我尝试使用$(元素).css添加只是css,但这似乎没有什么区别

链接:https://jsfiddle.net/r4Lxvqps/

HTML:

<!DOCTYPE html>
<title>A</title>

    <body>
        <div class="container">
            <header class="header">
                <nav class="nav">
                    <ul>
                        <li>
                            <a href="#">Home</a>
                        </li>
                        <li>
                            <a href="#">About Me</a>
                        </li>
                        <li id="logo">
                            <a href="#">Arshdeep</a>
                        </li>
                        <li>
                            <a href="#">Portfolio</a>
                        </li>
                        <li>
                            <a href="#">Contact</a>
                        </li>
                    </ul>
                </nav>
            </header>

            <div class="home">
                <div class="container">
                    <section>

                    </section>
                    <aside>
                        <img src="assets/images/imac.png" alt=""/>
                    </aside>
                </div>
            </div>

            <div class="about">
                <div class="container">

                </div>
            </div>

            <div class="portfolio">
                <div class="container">

                </div>
            </div>

            <div class="contact">
                <div class="container">

                </div>
            </div>
        </div>

    </body>

CSS:

* {
                padding: 0px;
                margin:0 auto;
                -webkit-transition: all .2s ease-in-out;
            }

            html, body {
                height: 100%;
                font-family: 'TitilliumWeb-Regular', 'sans-serif';
            }

            body {
                min-height: 100% !important;
            }

            h1 {
                padding: 0px;
                margin:0px;
            }
            .container {
                position:relative;
                height: 100%;
            }

            nav {
                padding: 5px 0px;
                position:fixed;
                width: 100%;
                top:0;
                z-index: 9999;
                color:black;
            }

            nav > ul {
                text-align: center;
                padding: 5px 0px;
            }

            nav > ul > li {
                display: inline-block;
                vertical-align: middle;
                margin:0 15px;
            }

            nav a {
                text-decoration: none;
                color:white;
                display: block; 
            }

            nav li a:not(#logo) {
                padding: 10px 18px;
            }

            nav li:not(#logo) a {
                opacity: .7;
            }

            nav li:not(#logo) a:hover {
                opacity: 1;
            }

            #logo a {
                font-size: 30px;
            }

            .scrolled {
                background-color:white;
                color:black !important;
            }

            /** Home Page **/
            .home {
                vertical-align: top;
                background-color: #38A5DB;
                color:black;
                min-height: 100%;
                position:relative;
            }

            .home > .container {
                top: 85px;
                padding: 50px 0px;
                float:left;
                width: 100%;
                color:white;
            }

            .about, .contact, .portfolio {
                min-height: 100%;
            }

            section {
                float:left;
                width: 48%;
                position:relative;
                text-align: center;
            }

            aside {
                float:right;
                width: 50%;
            }

            aside > img {
                width: 80%;
            }

            /** About Me **/

检查偏移量是否> 50然后应该添加css(颜色:黑色) 的 JQuery的:

$(document).ready(function() {
  $(window).scroll(function() {
    var scroll_offset = $(window).scrollTop;
    if (scroll_offset > 50) {
      $(".nav").css("color", "black");
    }
  });
});

3 个答案:

答案 0 :(得分:2)

var scroll_offset = $(window).scrollTop();

$.fn.scrollTopfunction。你忘了调用它。

答案 1 :(得分:1)

也可以尝试:

$(window).scroll(function() {
  if ($(window).scrollTop() >= 50) {
$(".nav ul li a").css("color", "black");
  } else {
  $(".nav ul li a").css("color", "white");
  }
});

<强> JSFiddle

答案 2 :(得分:1)

  1. 调用scrollTop函数(scrollTop()
  2. 修复选择器:nav a而不是.nav
  3. 添加else语句以恢复原始颜色
  4. <强> jsFiddle demo

    $(document).ready(function() {
      $(window).scroll(function() {
        var scroll_offset = $(window).scrollTop();
        //alert(scroll_offset);
        if (scroll_offset > 50) {
          $("nav a").css("color", "black");
        } else {
          $("nav a").css("color", "white");
        }
      });
    });
    * {
      padding: 0px;
      margin: 0 auto;
      -webkit-transition: all .2s ease-in-out;
    }
    
    html,
    body {
      height: 100%;
      font-family: 'TitilliumWeb-Regular', 'sans-serif';
    }
    
    body {
      min-height: 100% !important;
    }
    
    h1 {
      padding: 0px;
      margin: 0px;
    }
    
    .container {
      position: relative;
      height: 100%;
    }
    
    nav {
      padding: 5px 0px;
      position: fixed;
      width: 100%;
      top: 0;
      z-index: 9999;
      color: black;
    }
    
    nav > ul {
      text-align: center;
      padding: 5px 0px;
    }
    
    nav > ul > li {
      display: inline-block;
      vertical-align: middle;
      margin: 0 15px;
    }
    
    nav a {
      text-decoration: none;
      color: white;
      display: block;
    }
    
    nav li a:not(#logo) {
      padding: 10px 18px;
    }
    
    nav li:not(#logo) a {
      opacity: .7;
    }
    
    nav li:not(#logo) a:hover {
      opacity: 1;
    }
    
    #logo a {
      font-size: 30px;
    }
    
    .scrolled {
      background-color: white;
      color: black !important;
    }
    
    
    /** Home Page **/
    
    .home {
      vertical-align: top;
      background-color: #38A5DB;
      color: black;
      min-height: 100%;
      position: relative;
    }
    
    .home > .container {
      top: 85px;
      padding: 50px 0px;
      float: left;
      width: 100%;
      color: white;
    }
    
    .about,
    .contact,
    .portfolio {
      min-height: 100%;
    }
    
    section {
      float: left;
      width: 48%;
      position: relative;
      text-align: center;
    }
    
    aside {
      float: right;
      width: 50%;
    }
    
    aside > img {
      width: 80%;
    }
    
    
    /** About Me **/
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div class="container">
        <header class="header">
          <nav class="nav">
            <ul>
              <li>
                <a href="#">Home</a>
              </li>
              <li>
                <a href="#">About Me</a>
              </li>
              <li id="logo">
                <a href="#">Arshdeep</a>
              </li>
              <li>
                <a href="#">Portfolio</a>
              </li>
              <li>
                <a href="#">Contact</a>
              </li>
            </ul>
          </nav>
        </header>
    
        <div class="home">
          <div class="container">
            <section>
    
            </section>
            <aside>
              <img src="assets/images/imac.png" alt="" />
            </aside>
          </div>
        </div>
    
        <div class="about">
          <div class="container">
    
          </div>
        </div>
    
        <div class="portfolio">
          <div class="container">
    
          </div>
        </div>
    
        <div class="contact">
          <div class="container">
    
          </div>
        </div>
      </div>

相关问题