譯者:為之漫筆
鏈接:5行JavaScript代碼實現(xiàn)頁面平滑滾動 - 眾成翻譯
原文:Smooth Page Scroll in 5 Lines of JavaScriptHTML本身具有跳到頁面任意位置的能力,只需" />
時間:2023-10-06 12:48:01 | 來源:網(wǎng)站運營
時間:2023-10-06 12:48:01 來源:網(wǎng)站運營
5行JavaScript代碼實現(xiàn)頁面平滑滾動:本文轉(zhuǎn)載自:眾成翻譯HTML本身具有跳到頁面任意位置的能力,只需給目標元素一個id 屬性即可。這個技術(shù)叫做“錨鏈接”。
譯者:為之漫筆
鏈接:5行JavaScript代碼實現(xiàn)頁面平滑滾動 - 眾成翻譯
原文:Smooth Page Scroll in 5 Lines of JavaScript
<a href="#destination">Click me: I’m <em>smoooooth</em>.</a>…<p id="destination">This is the target, further down the page.
顯然,只有頁面長度超過窗口高度才可能真的跳轉(zhuǎn)。為此,請自行在前面代碼中省略號位置補充足夠多的內(nèi)容(或者試試我們推薦的填充文本生成器)。
body { scroll-behavior: smooth;}
注意,別用英式寫法,是scroll-behavior,沒有“u”。
var anchorLink = document.querySelector("a[href='#destination']"),target = document.getElementById("destination");anchorLink.addEventListener("click", function(e) { if (window.scrollTo) { e.preventDefault(); window.scrollTo({"behavior": "smooth", "top": target.offsetTop}); }})
先用querySelector通過CSS屬性選擇符找到href目標為#destination的鏈接。在鏈接的點擊事件中,測試瀏覽器是否支持scrollTo方法。如果支持,先用e.preventDefault阻止瀏覽器立即跳轉(zhuǎn),然后調(diào)用scrollTo方法,由前面的CSS聲明實現(xiàn)平滑效果。有3個選項:behavior、top必需,left可選。后兩個指的是跳轉(zhuǎn)目標在頁面中的位置坐標值。可以用window.scroll代替window.scrollTo,它們功能一樣。相對于加載框架,這幾行代碼簡單得多。唯一的缺點是不允許修改計時函數(shù)或緩動函數(shù),據(jù)說是防止被濫用。
var forEach = function (array, callback, scope) { for (var i = 0; i < array.length; i++) { callback.call(scope, i, array[i]); }};
然后,找到所有錨鏈接和它們的地址,給它們的點擊事件注冊scrollTo: var anchorLinks = document.querySelectorAll("a[href^='#']");if (window.scrollTo) { forEach(anchorLinks, function(index, element) { var target = document.getElementById(element.getAttribute("href").substring(1)); element.addEventListener("click", function(el) { el.preventDefault(); window.scrollTo(0, target.offsetTop); }) });}
注意,同樣需要在body標簽的CSS樣式中添加scroll-behavior聲明。關鍵詞:平滑,滾動,實現(xiàn)
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。