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 關注
- 157 瀏覽
添加回答
舉報