Я пытаюсь добавить тень к фиксированной панели навигации моего сайта, когда она достигает определенного раздела. Может ли кто-нибудь объяснить, почему это не работает?

В моем .CSS

.whiteDropShadow {
-moz-box-shadow: 0 0 10px #FFFFFF; 
-webkit-box-shadow: 0 0 10px #FFFFFF;
-o-box-shadow: 0 0 10px #FFFFFF;
box-shadow: 0 0 10px #FFFFFF;
}

В моем .JS

$(function() {

// Initial top offset from ABOUT section
var topOffset = $('#about').offset().top;

// FUNCTION: adds class to #navLinks when vertical distance from the top is larger than the initial top offset.
var editNavBar = function(){
    var verticalDistance = $(window).scrollTop(); // Current vertical distance from the top

    if (verticalDistance > topOffset) { 
        $('#navLinks').addClass('.whiteDropShadow');
    } else {
        $('#navLinks').removeClass('.whiteDropShadow');
    }
};

// Run upon scrolling
$(window).scroll(function() {
     editNavBar();
});

});

0
myom 15 Окт 2014 в 01:47
Вам не нужен период в функции addClass, только имя.
 – 
Christopher Marshall
15 Окт 2014 в 01:50
Спасибо. Хотя все равно не повезло..
 – 
myom
15 Окт 2014 в 01:52

2 ответа

Лучший ответ

У меня здесь работает. Я просто отключил ваши значения, чтобы убедиться, что вы можете прокрутить достаточно далеко, чтобы условие было выполнено. Также добавлен #navLinks в ваш селектор whiteDropShadow.

Я бы дважды проверил, можете ли вы прокручивать страницу достаточно долго, чтобы сделать условную правдивость.

http://jsfiddle.net/y2zu5cwn/

<div id="navLinks">
    <a href="#">item1</a>
    <a href="#">item 2</a>
    <a href="#">item 3</a>
</div>

<div class="container">
    <div id="spacer">
        <p>Just for space</p>
    </div>

    <div id="about">
        <p>about</p>
    </div>    
</div>

// Initial top offset from ABOUT section
var topOffset = $('#about').offset().top;

// FUNCTION: adds class to #navLinks when vertical distance from the top is larger than the initial top offset.
var editNavBar = function(){
    var verticalDistance = $(window).scrollTop(); // Current vertical distance from the top
    console.log( verticalDistance, topOffset );


    if (verticalDistance > topOffset) { 
        $('#navLinks').addClass('whiteDropShadow');
    } else {
        $('#navLinks').removeClass('whiteDropShadow');
    }
};

// Run upon scrolling
$(window).scroll(function() {
     editNavBar();
});

#navLinks {
    position: fixed;
    top: 0;
    width: 100%;
    height: 20px;
    background: #aeaeae;
}



#navLinks a { color: #000;}

#navLinks.whiteDropShadow {
-moz-box-shadow: 0 0 10px #FFFFFF; 
-webkit-box-shadow: 0 0 10px #FFFFFF;
-o-box-shadow: 0 0 10px #FFFFFF;
box-shadow: 0 0 10px #FFFFFF;
}

.container { height: 1400px; }

#spacer {
    display: block;
    height: 500px;
    background: green;
}

#about {
    display: block;
    height: 500px;
    background: red;
}
1
Christopher Marshall 15 Окт 2014 в 01:56
1
Ты святой. Спасибо! Хитрость заключалась в том, чтобы добавить #navLinks в мой селектор whiteDropShadow. Почему это работает? Селектор «#navLinks.whiteDropShadow» не создается с помощью функции addClass? Думаю, это имеет смысл.
 – 
myom
15 Окт 2014 в 02:04
Он работает даже без селектора ID (удалите #navLinks из #navLink.whiteDropShadow в скрипке). Честно говоря, я не совсем уверен, в чем проблема, поскольку я не сильно изменился.
 – 
Christopher Marshall
15 Окт 2014 в 02:07

JQuery - путевые точки

Вот сайт, который я использовал для этого ... http://cardbinder.herokuapp.com/ card_sets / magic-2014 / cards

Вы в основном выбираете элемент в качестве триггера, а затем, когда этот элемент достигает верхней (или нижней) части экрана (или смещения от него), элемент получает добавленный к нему класс. В этот момент вы можете делать с этим классом все, что захотите. Я использую ту же библиотеку для отложенной загрузки изображений на той же странице.

1
Dudo 15 Окт 2014 в 02:12
Waypoints — отличная библиотека. Я бы порекомендовал его, но он уже так далеко продвинулся (и, возможно, это единственное, для чего ему это было нужно), и было бы неправильно предлагать плагин.
 – 
Christopher Marshall
15 Окт 2014 в 02:17