私はJSを始めたばかりで苦労しています。この素敵なコードを Adam Khoury から入手しました。ページをスクロールしてターゲット要素まで美しくアニメーション化されています。
は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>