У меня есть прокрутка, div
и я хочу иметь ссылку, когда я нажимаю на нее, это заставит ее div
прокручивать, чтобы просмотреть элемент внутри. Я написал его JavasSript так:
document.getElementById(chr).scrollIntoView(true);
но это прокручивает всю страницу при прокрутке div
самой. Как это исправить?
Я хочу сказать это так
MyContainerDiv.getElementById(chr).scrollIntoView(true);
javascript
html
scroll
Амр Элгархи
источник
источник
SetTimeout
в$(document).ready({})
функции и установитьfocus()
элемент, к которому вы хотите перейти. Работает для меняОтветы:
Вам нужно получить верхнее смещение элемента, который вы хотите прокрутить в представлении, относительно его родителя (прокручиваемый контейнер div):
Переменная topPos теперь установлена на расстояние между вершиной прокручиваемого элемента div и элементом, который вы хотите видеть (в пикселях).
Теперь мы говорим div, чтобы перейти к этой позиции, используя
scrollTop
:Если вы используете прототип JS Framework, вы должны сделать то же самое, как это:
Опять же, это прокручивает div так, что элемент, который вы хотите видеть, находится точно вверху (или, если это невозможно, прокручивается как можно ниже, чтобы он был виден).
источник
myElement.offsetTop
вызовет перекомпоновку (перебивание макета), которая может стать узким местомposition: relative
элемент прокрутки с помощью css: в противном случае вы потратите много времени на отладку, как я только что сделал.overflow-y
свойствоscroll
для родительского элемента (scrolling_div
), в противном случае оно не работало. Значение css по умолчанию для этогоoverflow
свойства -auto
и хотя это также делает возможной ручную прокрутку, код js не будет работать (даже с{psition: relative}
..)h4
аdiv
затемarticle
тег иarticle
работал только для меня.Вам нужно будет найти положение элемента в DIV, к которому вы хотите перейти, и установить свойство scrollTop.
Обновление :
Пример кода для перемещения вверх или вниз
источник
Метод 1 - плавная прокрутка к элементу внутри элемента
Способ 2 - Использование Element.scrollIntoView :
Способ 3 - Использование CSS прокрутки-поведения :
источник
Чтобы прокрутить элемент в поле зрения div, только при необходимости вы можете использовать эту
scrollIfNeeded
функцию:источник
Код должен быть:
Вы хотите прокрутить разницу между верхней дочерней позицией и верхней позицией div.
Получить доступ к дочерним элементам, используя:
и так далее....
источник
var chElem = document.getElementById('element_within_div');
а 3-я строка читатьvar topPos = divElem.offsetTop;
?Если вы используете jQuery, вы можете прокрутить анимацию с помощью следующего:
Анимация необязательна: вы также можете взять значение scrollTop, рассчитанное выше, и поместить его непосредственно в свойство контейнера scrollTop .
источник
Родной JS, кросс-браузер, плавная прокрутка (обновление 2020)
Настройка
ScrollTop
дает желаемый результат, но прокрутка очень резкая. Использоватьjquery
плавную прокрутку было невозможно. Так что вот родной способ выполнить работу, которая поддерживает все основные браузеры. Ссылка - caniuseЭто оно!
А вот рабочий фрагмент для сомнительных -
Обновление: как вы можете заметить в комментариях, похоже, что
Element.scrollTo()
не поддерживается в IE11. Так что если вы не заботитесь о IE11 (вы действительно не должны), не стесняйтесь использовать это во всех ваших проектах. Обратите внимание, что поддержка Edge существует! Так что вы на самом деле не оставляете своих пользователей Edge / Windows позади;)Ссылка
источник
scrollTo()
может поддерживаться во всех основных браузерах дляWindow
объектов, но не поддерживается в IE или Edge для элементов.window.scrollTo
не такElement.scrollTo
. Попробуйте это в Edge, например, и проверьте консоль: codepen.io/timdown/pen/abzVEMBЕсть два факта:
1) Компонент scrollIntoView не поддерживается сафари.
2) JS Framework JQuery может сделать работу следующим образом:
источник
Вот простое чистое решение JavaScript, которое работает для целевого числа (значения для
scrollTop
), целевого элемента DOM или некоторых особых случаев String:И вот несколько примеров использования:
или
или
источник
Еще один пример использования jQuery и animate.
источник
Пользовательская анимационная прокрутка
Вот пример того, как программно прокрутить
<div>
горизонтально, без JQuery . Для прокрутки по вертикали, вы бы заменить пишет технологию JavaScript, чтобыscrollLeft
сscrollTop
, вместо этого.JSFiddle
https://jsfiddle.net/fNPvf/38536/
HTML
JavaScript
Кредит Дуксу .
Авто Анимированная Прокрутка
Кроме того, здесь есть функции для прокрутки
<div>
полностью влево и вправо. Единственное, что мы здесь изменим, - это проверим, использовалось ли полное расширение прокрутки, прежде чем делать рекурсивный вызов для прокрутки снова.JSFiddle
https://jsfiddle.net/0nLc2fhh/1/
HTML
JavaScript
источник
Это то, что, наконец, послужило мне
источник
Браузер выполняет автоматическую прокрутку до элемента, который получает фокус, так что вы также можете сделать это, чтобы обернуть элемент, в который нужно прокрутиться,
<a>...</a>
а затем, когда вам нужно прокрутить, просто установите фокус на этомa
источник
После выбора элемента просто используйте
scrollIntoView
функцию с опцией ниже:Таким образом, ответ на этот пост:
источник
если у вас есть элемент div, который нужно прокрутить внутри, попробуйте этот фрагмент кода
document.querySelector('div').scroll(x,y)
это работает со мной внутри div со свитком, это должно работать с вами, если вы навели указатель мыши на этот элемент, а затем попытались прокрутить вниз или вверх. Если это работает вручную, это должно работать тоже
источник