2 回答
TA贡献1802条经验 获得超5个赞
问题是你的导航栏覆盖了 div 的顶部。您可以通过使用window.scrollBy()和offsetHeight将窗口再次向上滚动导航栏的高度来避免这种情况。该解决方案的优点是它不需要您知道导航栏的起始高度,因此它允许各种不同的浏览器配置。
function headerClick(elem) {
if (elem.innerHTML === 'One') {
document.getElementById("One").scrollIntoView();
window.scrollBy(0, -(elem.offsetHeight)-2)
}
if (elem.innerHTML === 'Two') {
document.getElementById("Two").scrollIntoView();
window.scrollBy(0, -(elem.offsetHeight)-2)
}
if (elem.innerHTML === 'Three') {
document.getElementById("Three").scrollIntoView();
window.scrollBy(0, -(elem.offsetHeight)-2)
}
if (elem.innerHTML === 'Four') {
document.getElementById("Four").scrollIntoView();
window.scrollBy(0, -(elem.offsetHeight)-2)
}
if (elem.innerHTML === 'Five') {
document.getElementById("Five").scrollIntoView();
window.scrollBy(0, -(elem.offsetHeight)-2)
}
}
额外的 -2 是为了确保可以看到 div 边框,但如果不需要,可以将其删除。
TA贡献1820条经验 获得超9个赞
您可以这样实现:在每个部分之前添加某种锚点,然后滚动到该部分滚动到不可见的锚点,该锚点将有一些顶部偏移。
<a id='Two'></a>
<div class="common">Two</div>
#Two {
display: block;
position: relative;
top: -120px; /*Here must be same value as your navbar height is*/
visibility: hidden;
}
我希望它对你有帮助!
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报