简体   繁体   English

如何将页面滚动到特定位置

[英]how can I scroll page to the specific position

I would like to ask why my page goes up when I clicked it again?我想问为什么我的页面再次点击时会出现? I mean if I click on the 'projects' for example then it goes to the projects section which is (0, 590), but If I click it on again or click on skills then it goes up to the top of the page.我的意思是,例如,如果我单击“项目”,那么它会转到项目部分,即 (0, 590),但是如果我再次单击它或单击技能,它就会转到页面顶部。

const home_view = document.querySelector('.home');
const project_view = document.querySelector('.project');
const skill_view = document.querySelector('.skill');
const about_view = document.querySelector('.about');
const hire_view = document.querySelector('.hire');


home_view.addEventListener('click', () => {
    window.scrollTo(0, 0);
});

project_view.addEventListener('click', () => {
    window.scrollTo(0, 590);
});

skill_view.addEventListener('click', () => {
    window.scrollTo(0, 1250);
});

about_view.addEventListener('click', () => {
    window.scrollTo(0, 1750);
});

hire_view.addEventListener('click', () => {
    window.scrollTo(0, 2350);
});

Generally, if you want to scroll to specific element, it would be better to use scrollIntoView function一般来说,如果要滚动到特定元素,最好使用scrollIntoView函数

Ex:前任:

const projectElement = document.querySelector('project-element-selector')

project_view.addEventListener('click', () => {
    projectElement.scrollIntoView({ behavior: "smooth" });
});

Because using scrollTo for this purpose may not achieve the same result in different screens width.因为为此目的使用scrollTo可能无法在不同的屏幕宽度下达到相同的结果。

I didn't add every css part, because I guess it's not necessary in this case.我没有添加每个 css 部分,因为我想在这种情况下没有必要。 I don'k know that this added HTML will give you more help, but I hope so我不知道这个添加的 HTML 会给你更多帮助,但我希望如此

 const home_view = document.querySelector('.home'); const project_view = document.querySelector('.project'); const skill_view = document.querySelector('.skill'); const about_view = document.querySelector('.about'); const hire_view = document.querySelector('.hire'); home_view.addEventListener('click', () => { window.scrollTo(0, 0); }); project_view.addEventListener('click', () => { window.scrollTo(0, 590); }); skill_view.addEventListener('click', () => { window.scrollTo(0, 1250); }); about_view.addEventListener('click', () => { window.scrollTo(0, 1750); }); hire_view.addEventListener('click', () => { window.scrollTo(0, 2350); });
 *, *::before, *::after { padding: 0; margin: 0; box-sizing: border-box; text-decoration: none; list-style: none; border: none; outline: none; } .nav_container { height: 200vh; top: 0; left: 0; margin: 0 auto; background-color: rgba(13, 12, 14, 0.8); border-bottom: var(--nav-line) solid var(--nav-borderline-clr); } .main_nav { display: flex; justify-content: space-between; align-items: center; padding: 2rem; } .main_nav a { color: var(--nav-text-clr); font-weight: 400; transition: .3s; } .main_nav a:hover { color: var(--white-clr); } .nav_list { display: flex; gap: 2.5rem; text-transform: uppercase; } .nav_list-item { position: relative; } .nav_list-item:after{ content: ''; position: absolute; left: 0; bottom: -33px; width: 0; height: var(--nav-line); background-color: var(--btn-border-clr); transition: .3s; border-radius: 2px; box-shadow: rgba(219, 94, 44, .6) 0px 0px 10px; } .nav_list-item:hover:after { width: 100%; }
 <header class="nav_container"> <nav class="main_nav"> <ul class="nav_list"> <li class="nav_list-item active home"><a href="#">Home</a></li> <li class="nav_list-item project"><a href="#">Projects</a></li> <li class="nav_list-item skill"><a href="#">Skills</a></li> <li class="nav_list-item about"><a href="#">About Me</a></li> </ul> <button class="btn hire" aria-label="button">Hire Me</button></a> </nav> </header>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM