先前我們提過可以透過 scroll-behavior: smoth; 達成免 javascript 就可以透過點擊超連結的錨點平滑移到對應的區塊,而如果有時候頁面上方被元素擋住,比如選單之類的,這樣滑過去時因為預設是貼到瀏覽器頂端,所以該區塊最上方就會被遮住,這個以往因為都是靠 javascript 處理所以加個參數就好,現在我們也都能夠完全用 CSS 解決了。
處理方法很簡單,在 html, body 加上 scroll-padding-top 並設定想要的間距就好。
html, body { scroll-padding-top: 100px; }
這將使點擊錨點時,滾動條會先向上滾動 100 像素,然後再滾動到錨點的位置。
以往使用 JavaScript 來設定的做法可以參考以下程式碼:
function scrollToAnchor(anchorName) { var anchor = document.getElementById(anchorName); var offset = anchor.offsetTop; window.scrollTo({ top: offset - 100, }); } document.querySelector('a[href="#anchor]').addEventListener('click', scrollToAnchor);
可以用純 CSS 就方便很多了。