На нагрузке, прыгать на якорь в DIV - PullRequest
2 голосов
/ 10 ноября 2009

Допустим, у меня есть следующая страница:

<html>
<body>
<div id='foo' style='scroll:auto;height:400px'>
      // content, content, content...
      <div id='bar'></div>
      // content, content, content...
</div>
</body>
</html>

Какой jQuery (или ванильный Javascript) я могу использовать, чтобы при загрузке страницы она переходила на #bar только внутри div # foo (а не на всю страницу)? Мне не нужна необычная анимация или прокрутка, я просто хочу, чтобы #bar находился в верхней части элемента div при загрузке страницы.

Ответы [ 3 ]

7 голосов
/ 10 ноября 2009

Решение jQuery (предполагается, что все элементы расположены как-то)

$('#foo').scrollTop($('#bar').position().top);

EDIT

Примечание: Убедитесь, что вы установили padding-top на bar, а не margin-top, если хотите, чтобы после прокрутки оставалось место между foo и bar.

РЕДАКТИРОВАТЬ Решение DOM (работает независимо от того, были ли элементы расположены или нет, см. Ответ @cobbals для эквивалента jQuery):

document.getElementById('foo').scrollTop += document.getElementById('bar').offsetTop - document.getElementById('foo').offsetTop
1 голос
/ 10 ноября 2009

длинный и громоздкий, вероятно, есть способ сократить его, но каждый раз он попадает в нужное место.

$("#foo").scrollTop($("#foo").scrollTop() +
                    $("#bar").offset().top -
                    $("#foo").offset().top);
1 голос
/ 10 ноября 2009
$(document).ready(function() {
   $("#foo").scrollTop($("#foo #bar").position().top);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...