如何使用CSS / JS滚动到特定元素

时间:2014-11-06 06:55:11

标签: javascript html css css3 scroll

这是虚拟代码。我的要求是,当我点击上一个li元素时,其中会显示一个hidden div。但我需要scroll向下查看它。 因此,当我点击li id=hello时,窗口会自动向下滚动到该div?

首先使用CSS然后使用JS而不使用jQuery。



var ele=document.getElementById('hello');


ele.addEventListener("click", function (event) {
    document.getElementById("hidden-div").style.display="block";
},false);

.fixed-height-div{
 height:120px;
 overflow-y:scroll;
}

.fixed-height-div > li{
    background-color:lightblue;
    list-style-type: none;
}

<div class="fixed-height-div">
  <li>A</li>
  <li>B</li>
  <li>C</li>
  <li>D</li>
  <li>E</li>
  <li>F</li>
  <li>G</li>
  <li id="hello">H
      <div id="hidden-div" style="display:none;">
          This should be displayed after click<br><br>
          And the scroll should come to this screen.
       </div>
    </li>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:5)

在显示/展开隐藏的div之后,请调用scrollIntoView元素的li函数 这不需要jQuery。

function showIt(elementId) {
    var el = document.getElementById(elementId);
    el.scrollIntoView(true);
}

有关详情,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView

答案 1 :(得分:1)

您可以使用锚重定向window.location = currentlocation + "#" + id,也可以使用jquery lib - scrollTo

编辑: 我读它不能是jQuery。试试这个:

ele.addEventListener("click", function (event) {
    document.getElementById("hidden-div").style.display="block";
    window.location.href = window.location.href + "#hidden-div";
},false);

答案 2 :(得分:0)

var ele=document.getElementById('hello');
ele.addEventListener("click", function (event) {
    document.getElementById("hidden-div").style.display="block";
    var top = this.offsetTop;
    this.parentNode.scrollTop += top; //Container div scroll
    document.body.scrollTop += top; //Body scroll
},false);