У меня есть HTML-документ с изображениями в формате сетки, используя <ul><li><img...
. Окно браузера имеет вертикальную и горизонтальную прокрутку.
Вопрос:
Когда я нажимаю на изображение <img>
, как получить весь документ для прокрутки до положения, в котором находится изображение, на котором я только что щелкнул top:20px; left:20px
?
Я просматривал здесь похожие посты ... хотя я довольно плохо знаком с JavaScript и хочу понять, как это достигается для меня.
javascript
jquery
Насир
источник
источник
Ответы:
Поскольку вы хотите знать, как это работает, я объясню это шаг за шагом.
Сначала вы хотите связать функцию как обработчик щелчка изображения:
Это будет применять обработчик кликов к изображению с
id="someImage"
. Если вы хотите сделать это для всех изображений, замените'#someImage'
на'img'
.Теперь для фактического кода прокрутки:
Получить смещения изображения (относительно документа):
Вычтите 20 из
top
иleft
:Теперь анимируйте свойства CSS прокрутки вверху и прокрутки влево
<body>
и<html>
:источник
.scrollIntoView
метод W3C , когда элементы вложены в несколько переполненных контейнеров.Element.scrollIntoView()
: developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewscrollIntoView
Существует метод DOM
scrollIntoView
, который поддерживается всеми основными браузерами, который выравнивает элемент по верхнему / левому краю области просмотра (или как можно ближе).В поддерживаемых браузерах вы можете указать параметры:
В качестве альтернативы, если все элементы имеют уникальные идентификаторы, вы можете просто изменить
hash
свойствоlocation
объекта для поддержки кнопки назад / вперед:После этого просто настройте
scrollTop
/scrollLeft
properties на -20:источник
$("#myImage")[0].scrollIntoView(false);
выровняйте элемент в нижней части окна.scrollIntoView
может привести в замешательство пользователей без какой-либо анимации.scrollIntoView
булевский параметр. Я постараюсь позже отправить запрос на получение caniuse.com.<td>
элементы в поле зрения, вместо этого пришлось прокручивать их parent (<tr>
), и это работало.Самое простое решение, которое я видел
Учебник здесь
источник
Существуют методы для прокрутки элемента непосредственно в представление, но если вы хотите прокрутить до точки относительно элемента, вы должны сделать это вручную:
Внутри обработчика щелчка найдите положение элемента относительно документа, вычтите
20
и используйтеwindow.scrollTo
:источник
Взгляните на плагин jQuery.scrollTo . Вот демо .
Этот плагин имеет много опций, которые выходят за рамки родного scrollIntoView предлагает вам . Например, вы можете установить плавную прокрутку, а затем установить обратный вызов для завершения прокрутки.
Вы также можете взглянуть на все плагины JQuery с тегом "scroll" .
источник
Вот быстрый плагин jQuery, чтобы красиво отобразить встроенную функциональность браузера:
источник
После проб и ошибок я придумал эту функцию, тоже работает с iframe.
источник
Просто совет. Работает только на Firefox
Element.scrollIntoView ();
источник
В моем пользовательском интерфейсе есть вертикальная прокрутка списка больших пальцев внутри панели. Цель состояла в том, чтобы сделать текущий большой палец прямо в центре панели. Я начал с одобренного ответа, но обнаружил, что есть несколько настроек, которые действительно центрируют текущий большой палец. надеюсь, это поможет кому-то еще.
разметка:
JQuery:
источник
Простые 2 шага для прокрутки вниз до конца или вниз.
Шаг 1: получите полную высоту прокручиваемого (разговорного) div.
Шаг 2: примените scrollTop к этому прокручиваемому элементу (диалогу), используя значение, полученное на шаге 1.
Вышеуказанные шаги должны быть применены для каждого добавления в разговор div.
источник
После попытки найти решение, которое обрабатывало бы каждое обстоятельство (варианты анимации прокрутки, отступа вокруг объекта, когда он прокручивается в поле зрения, работает даже в неясных обстоятельствах, таких как в iframe), я наконец-то написал свое собственное решение для этого. Поскольку кажется, что это работает, когда многие другие решения потерпели неудачу, я решил поделиться этим:
$target
является объектом jQuery, содержащим объект, который вы хотите прокрутить, если необходимо.options
(необязательно) может содержать следующие параметры, передаваемые в объекте:options.$container
- объект jQuery, указывающий на содержащий элемент $ target (другими словами, элемент в dom с полосами прокрутки). По умолчанию используется окно, которое содержит элемент $ target и достаточно умное, чтобы выбрать окно iframe. Не забудьте указать $ в имени свойства.options.padding
- отступ в пикселях для добавления над или под объектом, когда он прокручивается в поле зрения. Таким образом, это не прямо на краю окна. По умолчанию 20.options.instant
- если установлено значение true, jQuery animate не будет использоваться, и прокрутка мгновенно откроется в нужном месте. По умолчанию false.options.animationOptions
- любые параметры jQuery, которые вы хотите передать в функцию анимирования jQuery (см. http://api.jquery.com/animate/ ). При этом вы можете изменить продолжительность анимации или запустить функцию обратного вызова после завершения прокрутки. Это работает, только еслиoptions.instant
установлено значение false. Если вам нужна мгновенная анимация, но с обратным вызовом, установитеoptions.animationOptions.duration = 0
вместо использованияoptions.instant = true
.источник