【问题标题】:How to scroll to the bottom of div after clicking on button x times?单击按钮x次后如何滚动到div的底部?
【发布时间】:2020-04-27 11:18:22
【问题描述】:

我正在制作一个允许滚动的面板。另外,我有一个按钮,我想在点击按钮 5 次后将面板内容滚动到底部scrollHeight 值的 5 x 20%)

我正在检查日志记录值,它是正确的,但实际上,当单击第 4 个按钮时,面板内容已经滚动到底部。

第五个,value 已更新,但面板内容不再滚动。

$('button').on('click', function () {
  var $panel = $('.panel');
  var scrollHeight = $panel.prop('scrollHeight');
  var value = $panel.scrollTop() + scrollHeight * 0.2;
  
  console.log(scrollHeight + ' - ' + value);
  
  $panel.animate({ scrollTop: value }, 500);
});
.panel {
  height: 100px;
  border: 1px solid;
  overflow-x: hidden;
  overflow-y: auto;
}

.panel div {
  height: 500px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="panel">
  <div></div>
</div>

<button type="button">Scroll</button>

【问题讨论】:

  • 试着把加法放在括号里var value = ($panel.scrollTop() + scrollHeight) * 0.2;
  • 如果在顶部,则为0,0*0.2 = 0。
  • @JoelHager 谢谢!我只是尝试一下。但它工作不正常。
  • 控制台记录点击的值
  • 也试试这个var value = $panel.scrollTop() + (scrollHeight * 0.2);

标签: javascript html jquery scroll


【解决方案1】:

我发现了这个问题。是数学。 :/ 如果您想点击 5 次,您实际上希望它进入 6 段。第一个状态是 5 次中的 1 次,因此只有 4 次额外的点击达到 5/5。我将您的滚动条更改为 /6,需要点击 5 次。

$('button').on('click', function () {
  var $panel = $('.panel');
  var scrollHeight = $panel.prop('scrollHeight');
  var value = $panel.scrollTop() + (scrollHeight / 6);
  
 
  
  $panel.animate({ scrollTop: value}, 500);
});
.panel {
  height: 100px;
  border: 1px solid;
  overflow-x: hidden;
  overflow-y: auto;
}

.panel div {
  height: 600px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="panel">
  <div></div>
</div>

<button type="button">Scroll</button>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-10
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多