У меня большой стол с вертикальной полосой прокрутки. Я хотел бы прокрутить до определенной строки в этой таблице, используя jQuery / Javascript.
Есть ли встроенные методы для этого?
Вот небольшой пример для игры.
div {
width: 100px;
height: 70px;
border: 1px solid blue;
overflow: auto;
}
<div>
<table id="my_table">
<tr id='row_1'><td>1</td></tr>
<tr id='row_2'><td>2</td></tr>
<tr id='row_3'><td>3</td></tr>
<tr id='row_4'><td>4</td></tr>
<tr id='row_5'><td>5</td></tr>
<tr id='row_6'><td>6</td></tr>
<tr id='row_7'><td>7</td></tr>
<tr id='row_8'><td>8</td></tr>
<tr id='row_9'><td>9</td></tr>
</table>
</div>
javascript
jquery
scroll
Миша Морошко
источник
источник
scrollTo
центру, а не на вершине:scrollTo.offset().top - container.offset().top + container.scrollTop() - (container.height()/2)
element.scrollIntoView()
- это все, что требуется. Анимация стандартизирована. См developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewЯ понимаю, что это не отвечает на прокрутку в контейнере, но люди находят это полезным, так:
Мы выбираем html и body, потому что может быть включен скроллер документов, и сложно определить, какой именно. Для современных браузеров вы можете сойти с рук
$(document.body)
.Или, чтобы перейти к началу страницы:
Или без анимации:
ИЛИ...
источник
$('html,body')
? Он нужен только в конкретном контейнере. Принятый ответ лучше для меня. У меня похожий случай, как заданный вопрос, и ваш ответ не сработал для меня.Я согласен с Кевином и другими, использовать плагин для этого бессмысленно.
источник
Мне удалось сделать это самому. Не нужно никаких плагинов. Проверьте мою суть :
источник
No need for any plugins
?? Но вы используете JQuery! Это чертовски огромная библиотека, даже не плагин.Вы можете использовать
scrollIntoView()
метод в JavaScript. просто дайid.scrollIntoView();
Например
источник
Вы можете использовать плагин jQuery scrollTo :
источник
Прокрутите элемент к центру контейнера
Подвести элемент к центру контейнера.
ДЕМО на CODEPEN
JS
HTML
CSS
Это не точно для центра, но вы не узнаете его на более крупных элементах.
источник
Вы можете прокручивать по jQuery и JavaScript. Просто нужно два элемента jQuery и этот код JavaScript:
Показать фрагмент кода
источник
Я сделал комбинацию того, что отправили другие. Это просто и гладко
источник
Не уверен, почему никто не говорит очевидное, так как есть встроенная
scrollTo
функция javascript :Ссылка .
источник
Вопреки тому , что большинство людей здесь предлагают, я рекомендую вам сделать использовать плагин , если вы хотите , чтобы оживить движение. Одного анимированного scrollTop недостаточно для плавного взаимодействия с пользователем. Смотрите мой ответ здесь для обоснования.
Я испробовал несколько плагинов за эти годы, но в итоге написал сам. Вы могли бы хотеть дать этому вращение: jQuery.scrollable . Используя это, действие прокрутки становится
Но это не все. Нам нужно также зафиксировать целевую позицию. Расчет вы видите в других ответах,
в основном работает, но не совсем правильно. Он не обрабатывает границу контейнера прокрутки должным образом. Целевой элемент прокручивается вверх слишком далеко, по размеру границы. Вот демо.
Следовательно, лучший способ рассчитать целевую позицию
Опять же, посмотрите на демо, чтобы увидеть его в действии.
Для функции, которая возвращает целевую позицию и работает для оконных и неоконных контейнеров прокрутки, не стесняйтесь использовать эту суть . Комментарии там объясняют, как рассчитывается позиция.
В начале я сказал, что для анимационной прокрутки лучше всего использовать плагин . Однако вам не нужен плагин, если вы хотите перейти к цели без перехода. Посмотрите ответ @James для этого, но убедитесь, что вы правильно рассчитали целевую позицию, если вокруг контейнера есть граница.
источник
Для чего это стоит, вот как мне удалось добиться такого поведения для общего элемента, который может быть внутри DIV с прокруткой (не зная контейнера)
Он создает ложный ввод высоты целевого элемента, а затем помещает на него фокус, и браузер позаботится об остальном, независимо от того, насколько глубоко вы находитесь внутри прокручиваемой иерархии. Работает как шарм.
источник
Я сделал эту комбинацию. это работа для меня. но стоит столкнуться с одной проблемой, если щелкнуть мышью, размер div слишком велик, чтобы Scennerio не прокручивал этот конкретный div.
источник