jQuery
없이 부드러운 스크롤을 사용하여 링크를 고정 할 수 있습니까? ? 새로운 사이트를 만들고 있는데 jQuery
을 사용하고 싶지 않습니다.jQuery없이 부드러운 스크롤 앵커 링크
답변
여기에서 함수를 사용하여 :
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/
만들기 JavaScript animation 및 속성 (뿐만 아니라 스타일의 속성을) 수정을 수정, 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 창 크기를 충분히 작게 설정하여 실제로 스크롤 막대가 생기고 5 번째 div로 스크롤 할 수 있습니다.
아니요, jQuery의 25 %를 재 작성하지 않아도됩니다.
이것은 분명히 질문이 실제로 의미하는 바에 따라 (예 : 창 해시가 변경 될 때 등) 크게 수정 될 필요가 있습니다. jQuery를 함께, 그것은 쉽게 있다는
는참고로 :
$(document).ready(function() {
$("html, body").animate({
scrollTop: $("#div5").offset().top
}, 2000);
});
DEMO :http://jsfiddle.net/7TAa2/1/
그냥 :target
선택기
시도해 본 사람들에게 : 훌륭한 스크립트이지만 여유롭거나 멋진 트윈을 기대하지 마십시오. 이것은 원시 스텔스 애니메이션의 일종입니다. –
비슷한 시도 : http://stackoverflow.com/questions/10063380/javascript-smooth-scroll-without-the-use-of-jquery & http://stackoverflow.com/questions/8917921/cross-browser-javascript- 아니 - jquery 스크롤 상단 애니메이션 –
파이어 폭스 (더 이상?)에서 작동하지 않습니다 – mtness
CSS3 전환 좋은 결과를 제공 할 수 있습니다 ... 말 JS 해킹없이. 나는 이것을 구현할지를 고려하고 있었지만 Jquery 없이는 약간 지저분해진다. 자세한 내용은 this question을 참조하십시오.
이 답변 확장 : scrollTo의 함수를 정의한 후 https://stackoverflow.com/a/8918062/3851798
을, 당신은 당신이 함수에서 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>
와 사업부, 거기에 당신이
elmnt = document.getElementById("footer");
scrollTo(document.body, elmnt.offsetTop, 600);
그리고이있는 경우 그것. jQuery없이 부드러운 스크롤. 실제로 브라우저의 콘솔에서 해당 코드로 놀고 원하는대로 미세 조정할 수 있습니다.
훨씬 더 좋은 대답입니다. 깨끗하고 확장 가능. 고맙습니다! –
'duration <= 0'이 아닌'duration <0' (2 행)으로 수정하는 것을 잊지 마십시오. – julesbou
Perfect. 짧고 달콤하며 끝내줍니다. Thanks @ Thejas Shah –
이 자바 스크립트 라이브러리를 사용하여 모든 내부 링크에 부드러운 스크롤을 추가 할 수 있습니다. 무시할 링크를 제공하기 위해 구성을 추가 할 수도 있습니다. 자세한 내용은 여기를 참조하십시오. https://codingninjascodes.github.io/SmoothScrollJs/
순수 경량 자바 스크립트 라이브러리 : 사실 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)은 아니지만 Internet Explorer에서 지원되는 순간에 악취가납니다! –
내가 가장 좋아하는 스크롤에 라이브러리가 현재 때문에 wide range of features와 작은 크기 (현재는 3.17kb)의 Zenscroll입니다.
앞으로는 scrollIntoView
네이티브 기능을 사용하는 것이 더 적절할 수 있지만, IE 지원이 없기 때문에 현재 대부분의 제작 사이트에서 폴리 필링해야하므로 모든 경우에 Zenscroll을 사용하는 것이 좋습니다.
- 1. 부드러운 스크롤 앵커 jquery
- 2. jQuery 부드러운 스크롤 앵커 문제
- 3. 요소 내에서 부드러운 스크롤, 첫 번째 링크/앵커 만 작동
- 4. 부드러운 스크롤 같은 페이지에서만 작동하지 외부 링크
- 5. 부드러운 스크롤 - 앵커 태그까지 완전히 스크롤하지 않음
- 6. 부드러운 스크롤 버튼 클릭
- 7. 가로형 부드러운 스크롤
- 8. CSS를 사용하여 부드러운 스크롤
- 9. 스크롤/jQuery없이 id로 이동
- 10. 부드러운 스크롤
- 11. 부드러운 스크롤
- 12. 부드러운 스크롤
- 13. jQuery 부드러운 스크롤 메뉴 모음
- 14. 메뉴의 닫기 기능을 방해하는 앵커 링크 스크롤
- 15. 부드러운 부드러운 스크롤 스크립트가 작동하지 않습니다
- 16. 부드러운 스크롤 효과 모양
- 17. 부드러운 스크롤 .net 양식
- 18. JQuery 부드러운 Div 스크롤
- 19. 스크롤 할 때 부드러운 스크롤
- 20. 스크롤 및 부드러운 스크롤 코드
- 21. 오프셋이있는 부드러운 스크롤링 앵커 (jquery)
- 22. 부드러운 스크롤 부트 스트랩 3
- 23. 두 번째 클릭시 JQuery 부드러운 스크롤 오작동
- 24. 부드러운 사업부 스크롤 크롬 문제
- 25. 부드러운 스크롤/관성 스크롤/운동량 스크롤
- 26. 만들기 지정된 앵커 링크를 div에 스크롤
- 27. jQuery 부드러운 스크롤
- 28. 재스민으로 부드러운 스크롤 테스트하기
- 29. div 내에서 부드러운 스크롤
- 30. js 부드러운 스크롤 만들기
@SLaks 25 %? 하아! 그래 맞아 ... – Ian
순수 js로 시도했지만 바보가된다 –
jquery에는 쓸모없는 코드가 너무 많아서 모든 jquery의 50 %를 사용하지 않으므로 바닐라 JS로 이동하거나 jquery에서 필요한 것만 가져올 것이다. – sbaaaang