javascript - Javascript滚动到元素
问题描述
我正在尝试制作一个小幻灯片菜单。每张幻灯片都是 100vh,我想用我的菜单滚动到每张幻灯片。
我做了查询和听众,现在我尝试让每次点击都转到正确的#slide。
幻灯片的数量将是动态的。
我不是 javascript 超级英雄,所以我希望我一切都好!
提前感谢您的帮助和建议。
let sections= document.querySelectorAll('.slide')
let nbrMenuLinks = sections.length;
for(i = 0; i < nbrMenuLinks; i++) {
const li = document.createElement('li');
li.className = 'scroll-item';
li.id = 'btn'+(i+1);
li.appendChild(document.createTextNode((i+1)));
document.querySelector('#slide-menu').appendChild(li);
li.addEventListener('click', ()=> {
window.scroll(0,findPos(document.getElementById(`slide3`)));
});
}
function findPos(obj) {
var curtop = 0;
if (obj.offsetParent) {
do {
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
return [curtop];
}
}
<ul id="slide-menu"></ul>
<div id="slide1" class="slide">
<h2>Slide 1</h2>
</div>
<div id="slide2" class="slide">
<h2>Slide 2</h2>
</div>
<div id="slide3" class="slide">
<h2>Slide 3</h2>
</div>
<div id="slide4" class="slide">
<h2>Slide 4</h2>
</div>
解决方案
谢谢,现在可以了,我只需要动态访问幻灯片的ID...
推荐阅读
- ramdisk - RAMdisk 读取似乎并不比硬盘 (HDD) 读取快
- server - Telerik 组件不起作用并在服务器上显示
- c# - 窗体打开时应用程序停止
- r - 在ggplot中将y轴标题居中在轴的顶部
- excel - 是否可以从 Excel 宏通过 Microsoft Teams 发送消息?
- aws-iot - 如何查询物联网设备的总活跃时间?
- node.js - 为什么给定的数据未插入 Mongoose DB
- javascript - 如何防止 React-Bootstrap 汉堡菜单在展开时影响我的其他徽标和图标的位置?
- git - 如何在 Git 中查看不同分支的文件(没有更改)?
- applescript - 根据applescript函数的输出设置变量