0
請看看我的例子。Dynamic ScrollTo功能需要下一個元素
我在我的網站上有多行和一個scrollto()按鈕,它總是在屏幕的底部。
根據用戶在某個時刻在我的網站上的位置,我希望他在點擊按鈕之後移動到下一行。
我知道如何讓用戶scrollto(),但我不知道我應該使用什麼樣的選擇器。
function myFunction() {
var winScroll = window.scrollTop; // current scroll of window
// find closest div
var rows = document.querySelectorAll('.row');
var closest = rows[0]; // first section
var closest_idx = 0;
var min = closest.offsetTop - winScroll;
rows.forEach(function(row, index) {
var divTopSpace = row.offsetTop - winScroll;
if(divTopSpace < min && divTopSpace > 0) {
closest = row;
closest_idx = index;
min = divTopSpace;
}
});
var next_idx = closest_idx + 1;
if (next_idx == rows.length) {
next_idx = 0;
}
console.log(rows[next_idx]);
}
.rowOne {
height: 100vh;
background-color: peachpuff;
}
.rowTwo {
height: 100vh;
background-color: firebrick;
}
.rowThree {
height: 100vh;
background-color: deepskyblue;
}
.btn {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 30px;
}
<div class="main">
<div class="row rowOne">
<div class="a">
<div class="b">
Foo
</div>
</div>
</div>
<div class="row rowTwo">
<div class="a">
<div class="b">
Bar
</div>
</div>
</div>
<div class="row rowThree">
<div class="a">
<div class="b">
Foobar
</div>
</div>
</div>
<button id="btn" class="btn" onclick="myFunction()">Button</button>
</div>
預先感謝您。
謝謝, 我會嘗試找出如何使它工作。 我在我的例子中粘貼了你的代碼,但有些東西似乎是錯誤的。 你有可能瞥見一下嗎? – AppRoyale
如果你讓一個jsfiddle我可以玩它,使其工作 – dave
謝謝。 http://jsfiddle.net/8vr6L9yb/ – AppRoyale