Я только начинаю с JS и борюсь. Я получил этот прекрасный код от Адама Хури, и он прекрасно работает в анимированном прокрутке страницы до целевого элемента.Javascript прокрутите до элемента с анимацией onclick
ul
находится в навигационной панели фиксированного положения.
Мой вопрос: какой код понадобится, чтобы анимация прокручивалась вверх и вниз при нажатии на якорь в nav
?
var scrollY = 0;
var distance = 10;
var speed = 24;
function autoScrollTo(el) {
var currentY = window.pageYOffset;
var targetY = document.getElementById(el).offsetTop;
var bodyHeight = document.body.offsetHeight;
var yPos = currentY + window.innerHeight;
var animator = setTimeout('autoScrollTo(\'' + el + '\')', 24);
if (yPos > bodyHeight) {
clearTimeout(animator);
} else {
if (currentY < targetY - distance) {
scrollY = currentY + distance;
window.scroll(0, scrollY);
} else {
clearTimeout(animator);
}
}
}
function resetScroller(el) {
var currentY = window.pageYOffset;
var targetY = document.getElementById(el).offsetTop;
var animator = setTimeout('resetScroller(\'' + el + '\')', speed);
if (currentY > targetY) {
scrollY = currentY - distance;
window.scroll(0, scrollY);
} else {
clearTimeout(animator);
}
}
<ul class="main-nav">
<li><a href="#" onclick="return false;" onmousedown="autoScrollTo('about');">
About</a>
</li>
<li><a href="#" onclick="return false;" onmousedown="autoScrollTo('testimonials');">
Testimonials</a>
</li>
<li><a href="#" onclick="return false;" onmousedown="autoScrollTo('contact');">
Contact</a>
</li>
</ul>
<hr style="margin: 25em 0;" />
<div id="about" class="navButton">
<p>About lorem ipsom....</p>
</div>
<div id="testimonials" class="navButton">
<p>Testimonial lorem ipsom....</p>
</div>
<div id="contact" class="navButton">
<p>Contact lorem ipsum</p>
</div>
У вас есть живой пример? – Playmaker
Вместо 'else {clearTimeout (аниматор);}', попробуйте 'else {scrollY = currentY-distance; window.scroll (currentY, scrollY);} ' – Playmaker
Готовы ли вы использовать jQuery? – dave