如何在溢出隐藏div内滚动到某个当前不可见的元素?

k0p*_*kus 17 javascript jquery scroll

我有一个溢出隐藏div中的元素列表.因此并非所有元素都可见.现在,如果一个元素被激活,它应该在div中可见.

如何使用jQuery滚动到活动元素?

最后一个元素具有活动类只是方便.它将动态切换.

 var scrollToEl = $("div.element.active");
 console.log(zoomToEl);
Run Code Online (Sandbox Code Playgroud)
 #main,
 #sidebar {
   height: 200px;
 }
 #wrapper {
   width: 190px;
   float: left;
   background: grey;
   overflow: auto;
   overflow-x: hidden;
 }
 #sidebar div.element {
   height: 150px;
   width: 150px;
   background-color: green;
   margin-bottom: 10px;
 }
 #sidebar div.element.active {
   background-color: red;
 }
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
  <div id="wrapper" class="sidebar">
    <div id="sidebar">
      <div class="element" data-slide-id="0">a
      </div>
      <div class="element" data-slide-id="1">b
      </div>
      <div class="element" data-slide-id="2">c
      </div>
      <div class="element" data-slide-id="3">d
      </div>
      <div class="element" data-slide-id="4">e
      </div>
      <div class="element" data-slide-id="5">f
      </div>
      <div class="element" data-slide-id="6">g
      </div>
      <div class="element active" data-slide-id="7">h
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

应该变得可见的元素:

var scrollToEl = $("div.element.active");
Run Code Online (Sandbox Code Playgroud)

sac*_*een 23

您可以设置scrollTop包装的div是topposition活跃元素.

$("#wrapper").scrollTop($("#wrapper").scrollTop() + $("div.element.active").position().top);
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 试过你的演示,但它只运行一次,尝试重复它,你会看到一些奇怪的行为.这似乎由以下代码修复:$("#wrapper").scrollTop($("#wrapper").scrollTop()+ $("div.element.active").position().top); 演示:http://jsfiddle.net/pA2Qh/ (3认同)

Vis*_*ioN 16

也许你正在寻找scrollIntoView方法.

scrollToEl[0].scrollIntoView();
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/yuFk5/14/