Я пытаюсь добавить тень к фиксированной панели навигации моего сайта, когда она достигает определенного раздела. Может ли кто-нибудь объяснить, почему это не работает?
В моем .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();
});
});
2 ответа
У меня здесь работает. Я просто отключил ваши значения, чтобы убедиться, что вы можете прокрутить достаточно далеко, чтобы условие было выполнено. Также добавлен #navLinks
в ваш селектор whiteDropShadow
.
Я бы дважды проверил, можете ли вы прокручивать страницу достаточно долго, чтобы сделать условную правдивость.
<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;
}
Вот сайт, который я использовал для этого ... http://cardbinder.herokuapp.com/ card_sets / magic-2014 / cards
Вы в основном выбираете элемент в качестве триггера, а затем, когда этот элемент достигает верхней (или нижней) части экрана (или смещения от него), элемент получает добавленный к нему класс. В этот момент вы можете делать с этим классом все, что захотите. Я использую ту же библиотеку для отложенной загрузки изображений на той же странице.
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.
addClass
, только имя.