javascript - 内部 DIV 滚动/向上滑动到它们所在的 DIV 的顶部

标签 javascript jquery css html

我在另一个 div 元素中设置了一列 div 元素。父级或主 div 设置为特定高度且可滚动。

当我调用一个函数时,根据我调用的内部 div 的 ID,我希望内部 div 动画/滚动到主 div 的顶部.

请注意,我不希望 div 元素改变位置 - 只是在保持原始位置的同时向上滚动。

JsFiddle HERE

这是我的代码:

document.addEventListener('click', goStart);

function goStart(event) {
  // Call the function
  clicknext('3');
};

function clicknext(id) {
  jQuery('#subdiv-' + id).animate({
    scrollTop: (jQuery('#main-div').offset().top)
  }, 500);
}
.inner {
  height: 50px;
  width: 100px;
  background: #c0c0c0;
  color: white;
  margin-bottom: 20px;
}

#main-div {
  height: 100px;
  overflow-y: scroll;
  background: #EFEFEF;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="main-div">

  <div class="inner" id="subdiv-1">
    DIV 1
  </div>

  <div class="inner" id="subdiv-2">
    DIV 2
  </div>

  <div class="inner" id="subdiv-3">
    DIV 3
  </div>

</div>

<input type="button" value="TRIGGER THE FUNCTION" id="triggerbutton">

最佳答案

滚动值是相对于parent offsetTop('#main-div')

const TabInner = [
  (document.getElementById('subdiv-1').offsetTop - document.getElementById('main-div').offsetTop),
  (document.getElementById('subdiv-2').offsetTop - document.getElementById('main-div').offsetTop),
  (document.getElementById('subdiv-3').offsetTop - document.getElementById('main-div').offsetTop)
  ];

var Trigg_ref = 1;
triggerbutton.onclick = function()
{
  Trigg_ref = (Trigg_ref +1) % 3;
  clicknext(Trigg_ref);
};


function clicknext(id)
{
  jQuery('#main-div').animate({
    scrollTop: TabInner[id] 
  }, 500);
}
.inner {
  height:50px;
  width:100px;
  background: #c0c0c0;
  color:white;
  margin-bottom:20px;
}
#main-div {
  height:100px;
  overflow-y:scroll;
  background:#EFEFEF;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="main-div">
  <div class="inner" id="subdiv-1">
    DIV 1
  </div>
  <div class="inner" id="subdiv-2">
    DIV 2
  </div>
  <div class="inner" id="subdiv-3">
    DIV 3
  </div>
</div>

<input type="button" value="TRIGGER THE FUNCTION" id="triggerbutton">

关于javascript - 内部 DIV 滚动/向上滑动到它们所在的 DIV 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55202501/

相关文章:

javascript - Karma 如何通过 id 加载模块?

javascript - 如果 foreach 中的所有条件都匹配

javascript - 包含通配符的最少字符数

html - 用于固定和全宽页面的可重复使用的包装器

css - extjs中如何使用css修改 "browse files"按钮?

javascript - 返回一个对象javascript

javascript - Switch 语句始终评估默认条件

javascript - 在 JavaScript 中打印时缩放页面

php - 实时 AJAX 搜索手机号码

html - Bootstrap 表单字段在布局中未对齐