純JS內的DIV(不窗口)的位置只能拜託 - NO JQUERY滾動使用純JS
我有溢出滾動一個div,窗口(HTML /機構)從未溢出本身。
我有一個錨鏈接的列表,並希望滾動到一個位置,當他們被點擊。
基本上只是尋找從一個div,而不是窗口錨點滾動。
window.scrollTo等不工作,因爲窗口實際上並沒有溢出。
簡單的測試用例http://codepen.io/mildrenben/pen/RPyzqm
JADE
nav
a(data-goto="#1") 1
a(data-goto="#2") 2
a(data-goto="#3") 3
a(data-goto="#4") 4
a(data-goto="#5") 5
a(data-goto="#6") 6
main
p(data-id="1") 1
p(data-id="2") 2
p(data-id="3") 3
p(data-id="4") 4
p(data-id="5") 5
p(data-id="6") 6
SCSS
html, body {
width: 100%;
height: 100%;
max-height: 100%;
}
main {
height: 100%;
max-height: 100%;
overflow: scroll;
width: 500px;
}
nav {
background: red;
color: white;
position: fixed;
width: 50%;
left: 50%;
}
a {
color: white;
cursor: pointer;
display: block;
padding: 10px 20px;
&:hover {
background: lighten(red, 20%);
}
}
p {
width: 400px;
height: 400px;
border: solid 2px green;
padding: 30px;
}
JS
var links = document.querySelectorAll('a'),
paras = document.querySelectorAll('p'),
main = document.querySelector('main');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', function(){
var linkID = this.getAttribute('data-goto').slice(1);
for (var j = 0; j < links.length; j++) {
if(linkID === paras[j].getAttribute('data-id')) {
window.scrollTo(0, paras[j].offsetTop);
}
}
})
}
純JS只能拜託 - NO JQUERY
是否有一個特定的原因,你想使用JS而不是隻是一個'HREF'?(如果是這樣,那很好,我只是想知道) – icke
@icke這只是後端人設置的方式。無論如何,href無法正常工作,因爲它們位於不同的容器中。並且href不平滑滾動 – mildrenben
不同的容器,因爲它們被加載到不同的iframe中?或者他們在同一頁面上?我從你的例子中刪除了所有的JS,將ID添加到目標和hrefs到菜單項,它在那裏滾動得很好,雖然承認並不順利。我覺得我錯過了這一點,但我不能告訴... @ – icke