【发布时间】:2021-11-25 15:24:24
【问题描述】:
【问题讨论】:
-
我很确定这与Link to a section of a webpage 或Linking to a specific part of a web page(可能还有更多)重复,如果不是,请解释原因。
标签: javascript html css
【问题讨论】:
标签: javascript html css
如果在同一页面上,请查看making headings link targets。前提是导航中的a 标签指向标题标签上的id,例如
<a href="#about-us">...</a>
<!-- will take you to: -->
<h2 id="about-us">About us</h2>
【讨论】:
要获得流畅的滚动体验而不是跳转到锚点,您可以通过在标题上使用 eventListener 来实现此目的。然后使用 how 元素的getBoundingClientRect() 来获取它在页面上的位置。
然后您可以将窗口对象滚动到元素的位置。
let header = document.getElementById('hacker-header');
let how = document.getElementById('how');
header.addEventListener('click', () => {
window.scrollTo({
top: how.getBoundingClientRect().y,
left: how.getBoundingClientRect().x,
behavior: 'smooth'
});
});
body {
background: black;
}
h1 {
color:lime;
}
#high {
height: 5000px;
width:200px;
background: linear-gradient(180deg, rgba(112,135,95,1) 0%, rgba(21,55,31,1) 35%, rgba(7,121,5,1) 100%);
}
<header id="hacker-header">
<h1>Hacker</h1>
</header>
<div id="high">
</div>
<footer id="how">
<h1>How</h1>
</footer>
【讨论】:
scroll-behavior: smooth; 来获得流畅的滚动体验,为什么还要使用 JavaScript?