2014-11-06 4 views
0

Это фиктивный код. Мое требование - когда я нажимаю на последний элемент li, затем один hidden div внутри него будет отображаться. Но мне нужно scroll до него, чтобы его увидеть. Итак, когда я нажимаю на li с id=hello, тогда окно должно автоматически прокручиваться вниз до этого div?Как перейти к определенному элементу с помощью CSS/JS

Первое предпочтение, использующее 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>

+0

нужно ли вам это анимировать? –

+0

Anything.Просто нужно прокручивать до этого div автоматически. –

+0

Ну, тогда первое, что я попробую, - это поставить простой элемент привязки внутри вашего 'hello'' li' и установить его атрибут 'href' в' # myHiddenDivsId'. Это не требует JS. –

ответ

3

Только после того, как вы показать/расширить свой скрытый DIV, вызовите scrollIntoView функцию li элемента Это не требует JQuery.

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

Для более см https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView

+0

Можете ли вы предоставить решение с помощью CSS? +1 для этого решения JS –

+0

@ShoaibChikate Я сомневаюсь, что вы можете прокручивать div, используя css. Хотя вы можете давать эффекты с помощью css во время прокрутки div. Но вы не можете установить значение прокрутки с помощью css. – shinobi

1

Вы можете использовать якорь перенаправив window.location = currentlocation + "#" + id, или вы можете использовать JQuery Lib - scrollTo

редактировать: Я прочитал это cannnot быть JQuery. Попробуйте это:

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

Можете ли вы предоставить решение с помощью CSS? +1 для этого JS-решения. –

+0

К сожалению, нет решения с использованием CSS. – bemol

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); 
Смежные вопросы