首页 > 解决方案 > 将列表向上/向下滚动到 div

问题描述

我有一个列出数字的无序列表。之后,我有一个带有左右箭头的 div 标签,以指示当前选择的数字。我已经尝试了以下代码,但它不起作用。

我的要求是,无论何时单击任何数字,列表都应缓慢向上/向下滚动到 div 的位置id="icon"。我该如何实施?

$('ul li').click(function() {
  alert("dfd");
  $('html, body').animate({
    scrollTop: $("#icon").offset().top
  }, 2000);
})
ul {
  list-style: none;
}

span {
  position: fixed;
  top: 50px;
  left: 35px
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>
<span id="icon"><&nbsp; &nbsp;></span>

https://jsfiddle.net/czjqf3p2/23/

标签: javascriptjqueryhtmlcssjquery-animate

解决方案


不要为 HTML/BODY 设置动画,而是尝试为 UL 设置动画,如下例所示。

$('ul li').click(function(){
var index=$(this).index();
var listPosition = -1*index*50;
$('ul').animate({
        top: listPosition
    }, 600);
})
ul {
  list-style:none; 
  position: fixed; 
  margin-top: 100px;
}
li{
  height: 50px;
  line-height: 50px;
}
span{
  position:fixed;
  top:0;
  left:35px;
  height: 50px;
  line-height: 50px;
  margin-top:100px;
 }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>
<span id="icon"> < &nbsp; &nbsp; > </span>


推荐阅读