我希望能够在两个元素之间平滑滚动。我一直在使用这个脚本在链接和锚点之间滚动。我希望重新使用这个脚本,以允许根据每个元素的'id'的一部分平滑滚动各种元素类型。
这是原始剧本
JQuery smooth scrolling when clicking an anchor link - 见下文
$(document).ready(function(e) {
//SCROLL TO ANCHOR TAG
var $root = $('html, body');
$('a').click(function() {
$root.animate({
scrollTop: $( $.attr(this, 'href') ).offset().top
}, 2000);
return false;
});
});
这是我要去的地方
我想修改脚本,以便在点击span
或div
然后滚动到具有设置ID的li
之间起作用:
<ul>
<li id="1">frame 1 - <span id="goto2" class="goto">go to frame 2</span></li>
<li id="2">frame 2 - <span id="goto3" class="goto">go to frame 3</span></li>
<li id="3">frame 3 - <span id="goto4" class="goto">go to frame 4</span></li>
<li id="4">frame 4 - <span id="goto5" class="goto">go to frame 5</span></li>
<li id="5">frame 5 - <span id="goto1" class="goto">go to frame 1</span></li>
</ul>
以下是我修改上述脚本的地方。
$(document).ready(function(e) {
//SCROLL TO ANCHOR TAG
var $root = $('html, body');
var $gotoid = $('.goto').attr('id');
var $justid = $gotoid.replace('goto','');
$('.goto').click(function() {
console.log($gotoid);
console.log($justid);
$root.animate({
scrollTop: $( $.attr(this, 'href') ).offset().top
}, 2000);
return false;
});
});
我无法弄清楚如何将scrollTop设置为在span
到li
之间使用相应的ID。我已经离开了原始剧本中的scrollTop线。
非常感谢任何帮助
由于
答案 0 :(得分:2)
这里是html
<ul>
<li id="li1">frame 1 - <span id="goto2" class="goto">go to frame 2</span></li>
<li id="li2">frame 2 - <span id="goto3" class="goto">go to frame 3</span></li>
<li id="li3">frame 3 - <span id="goto4" class="goto">go to frame 4</span></li>
<li id="li4">frame 4 - <span id="goto5" class="goto">go to frame 5</span></li>
<li id="li5">frame 5 - <span id="goto1" class="goto">go to frame 1</span></li>
</ul>
<div id="1">1</div><div id="2">2</div><div id="3">3</div><div id="4">4</div><div id="5">5</div>
这里有一点css用于视觉反馈
div{
height:600px;
background-color:#aaa;
margin-top:20px;
}
这是固定的JS
$(document).ready(function(e) {
//SCROLL TO ANCHOR TAG
var $root = $('html, body');
$('.goto').click(function() {
var $gotoid = $(this).prop('id');
var $justid = $gotoid.replace('goto','');
console.log($gotoid);
console.log($justid);
if(typeof $("#"+$justid) != undefined){ // test if target exists
$root.animate({
scrollTop: $("#"+$justid).offset().top
}, 2000);
}
return false;
});
});
然后,小提琴
随意请求解释