是否可以使用平滑滾動來錨鏈接,但沒有jQuery
?我正在創建一個新網站,我不想使用jQuery
。平滑滾動錨鏈接沒有jQuery
回答
從這裏使用功能:JavaScript animation並修改它來修改屬性(不只是一個風格的屬性),你可以嘗試這樣的事:
function animate(elem, style, unit, from, to, time, prop) {
if (!elem) {
return;
}
var start = new Date().getTime(),
timer = setInterval(function() {
var step = Math.min(1, (new Date().getTime() - start)/time);
if (prop) {
elem[style] = (from + step * (to - from))+unit;
} else {
elem.style[style] = (from + step * (to - from))+unit;
}
if (step === 1) {
clearInterval(timer);
}
}, 25);
if (prop) {
elem[style] = from+unit;
} else {
elem.style[style] = from+unit;
}
}
window.onload = function() {
var target = document.getElementById("div5");
animate(document.scrollingElement || document.documentElement, "scrollTop", "", 0, target.offsetTop, 2000, true);
};
DEMO:https://jsfiddle.net/zpu16nen/
製作當然,你確定窗口的大小足夠小,所以實際上有一個滾動條,並且可以滾動到第5個div。
不,不需要重新創建25%的jQuery。
這顯然需要高度修改,具體取決於你的問題實際上意味着什麼(比如當窗口哈希改變時,或類似的東西)。
注意與jQuery,它是那麼容易,因爲:
$(document).ready(function() {
$("html, body").animate({
scrollTop: $("#div5").offset().top
}, 2000);
});
DEMO:http://jsfiddle.net/7TAa2/1/
只是說...
對於那些試圖解決這個問題的人來說:這是一個很棒的腳本,但不要指望任何緩動或好的補間。這是一種生動的動畫。 –
類似的嘗試:http://stackoverflow.com/questions/10063380/javascript-smooth-scroll-without-the-use-of-jquery&http://stackoverflow.com/questions/8917921/cross-browser-javascript-不是jquery-scroll-to-top-animation –
在firefox中不能工作(不再?) – mtness
與:target
選擇CSS3過渡可以提供一個很好的結果沒有任何JS黑客入侵。我只是在考慮是否要實現這一點,但如果沒有Jquery,它會變得有點混亂。詳情請參閱this question。
擴展這樣的回答:https://stackoverflow.com/a/8918062/3851798
定義你的scrollTo的功能後,你可以通過你想scrollTo在功能的元件。
function scrollTo(element, to, duration) {
if (duration <= 0) return;
var difference = to - element.scrollTop;
var perTick = difference/duration * 10;
setTimeout(function() {
element.scrollTop = element.scrollTop + perTick;
if (element.scrollTop === to) return;
scrollTo(element, to, duration - 10);
}, 10);
}
如果你有一個id = 「頁腳」
<div id="footer" class="categories">…</div>
在您運行滾動,你可以運行此腳本一個div,
elmnt = document.getElementById("footer");
scrollTo(document.body, elmnt.offsetTop, 600);
有你有它。平滑滾動沒有jQuery。您實際上可以在瀏覽器的控制檯上播放該代碼並根據自己的喜好進行微調。
到目前爲止最好的答案。清潔和可擴展。謝謝! –
不要忘記用'duration <= 0'而不是'duration <0'(第2行)來修復它。 – julesbou
完美。簡短而甜蜜,完成它。謝謝@Tejas Shah –
你可以使用這個javascript庫來平滑滾動到你的所有內部鏈接。 您也可以添加配置,以提供要忽略的鏈接。 您可能會在這裏查看詳細信息。 https://codingninjascodes.github.io/SmoothScrollJs/
純輕量級的JavaScript庫:smooth-scroll on github
其實,有更輕便和簡單的方式做到這一點: https://codepen.io/ugg0t/pen/mqBBBY
function scrollTo(element) {
window.scroll({
behavior: 'smooth',
left: 0,
top: element.offsetTop
});
}
document.getElementById("button").addEventListener('click',() => {
scrollTo(document.getElementById("8"));
});
div {
width: 100%;
height: 200px;
background-color: black;
}
div:nth-child(odd) {
background-color: white;
}
button {
position: absolute;
left: 10px;
top: 10px;
}
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>
<div id="5"></div>
<div id="6"></div>
<div id="7"></div>
<div id="8"></div>
<div id="9"></div>
<div id="10"></div>
<button id="button">Button</button>
唯一的問題是,不是''element.offsetTop''而是''element.getBoundingClientRect()。 + window.scrollY'' – Braggae
使用此:
let element = document.getElementById("box");
element.scrollIntoView();
element.scrollIntoView(false);
element.scrollIntoView({block: "end"});
element.scrollIntoView({behavior: "instant", block: "end", inline: "nearest"});
嘗試添加一些解釋 –
解釋:https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView#Browser_compatibility –
非常有趣的解決方案(+1),但不是在目前的IE惡臭支持! –
我最喜歡的滾動圖書館目前Zenscroll因爲wide range of features和小尺寸(目前僅3.17kb)的。
未來,使用本地scrollIntoView
功能可能會更有意義,但由於缺乏IE支持,現在大多數生產站點都必須進行多填充,所以我建議在所有情況下都使用Zenscroll。
- 1. HTML錨鏈接平滑滾動
- 2. 特定錨鏈接的平滑滾動
- 3. 沒有錨點的平滑滾動
- 4. jQuery平滑滾動,只做錨鏈接是一個id
- 5. HTML |平滑滾動通過錨鏈
- 6. jQuery平滑滾動從外部鏈接
- 7. jQuery平滑滾動到錨點
- 8. jquery平滑滾動到錨點?
- 9. jQuery平滑滾動錨定問題
- 10. 平滑滾動jquery沒有方法
- 11. 刷新頁面後保持錨點鏈接活動類(平滑錨點滾動)
- 12. jquery平滑滾動外部鏈接鏈接
- 13. 在狀態欄上使用沒有鏈接的平滑滾動
- 14. jQuery水平滾動鏈接
- 15. 在單擊不同網站上的錨鏈接後,平滑滾動到錨點
- 16. jQuery平滑滾動
- 17. jquery平滑滾動
- 18. jQuery平滑滾動
- 19. 錨鏈接後,只有鏈接div的滾動高度(jQuery)
- 20. jQuery平滑水平滾動
- 21. 平滑滾動腳本攔截鏈接
- 22. 平滑滾動鏈接不起作用
- 23. 使用jQuery滾動到錨點鏈接
- 24. 水平滾動內部錨鏈接點擊使用jQuery
- 25. 平滑滾動到多個錨點
- 26. 平滑滾動到錨內div
- 27. 的Android的WebView平滑滾動錨
- 28. 有錨鏈接時滾動窗口
- 29. 平滑滾動div水平的像素量,沒有滾動條
- 30. jQuery平滑滾動到新頁面鏈接
@SLaks 25%?哈!是啊... – Ian
我嘗試過使用純js,但是它給了混蛋 –
jquery包含了很多無用的代碼,你永遠不會使用所有jquery的50%,所以去香草JS或者只從jquery得到你需要的東西 – sbaaaang