Я бы хотел, чтобы браузер прокручивал страницу до заданной привязки, просто используя JavaScript.
Я указал name
или id
атрибут в моем HTML-коде:
<a name="anchorName">..</a>
или
<h1 id="anchorName2">..</h1>
Я хотел бы получить тот же эффект, что и вы, перейдя к http://server.com/path#anchorName
. Страница должна быть прокручена так, чтобы якорь находился в верхней части видимой части страницы.
<a href="#anchorName">link</a>
function scrollToHash(hashName) { location.hash = "#" + hashName; }
Намного проще:
источник
scrollIntoViewOptions
который имеетbehavior: "smooth"
опцию, но в настоящее время он совместим только с Firefox.Вы можете использовать jQuerys .animate () , .offset () и
scrollTop
. подобнопример ссылки: http://jsbin.com/unasi3/edit
Если вы не хотите анимировать, используйте .scrollTop () как
или яваскрипты родные
location.hash
какисточник
<h1 id="anchorName">
или<a name="anchorName">
, используйте$('#'+hash+',a[name='+hash+']')
или слегка оптимизируйте его,$(document.getElementById(hash) || 'a[name='+hash+']')
который будет сначала искать элемент по идентификатору и прибегать к поиску только в том случае, если он не найден.$("#selector")
оптимизирован, но$("#selector,a[name='selector']")
не будет проходить те же оптимизации так же быстро. Полагаю, мой 2,5-летний комментарий звучит немного странно. «Оптимизация» избегаетa[name='selector']
поиска, если он находит идентификатор, а не оптимизирует поиск по идентификатору.Отличное решение от jAndy, но при плавной прокрутке возникают проблемы с работой в Firefox.
Написание этого способа работает и в Firefox.
источник
2018-2020 Pure JS:
Существует очень удобный способ прокрутки до элемента:
Но, насколько я понимаю, он не имеет такой хорошей поддержки, как варианты ниже.
Узнайте больше о методе.
Если необходимо, чтобы элемент находился сверху:
Демонстрационный пример на Codepen
Если вы хотите, чтобы элемент находился в центре:
Демонстрационный пример на Codepen
Служба поддержки:
Они пишут, что
scroll
это тот же методscrollTo
, но поддержка показывает лучше вscrollTo
.Подробнее о методе
источник
Чистое решение JavaScript без JQuery. Проверено на Chrome & Ie, не проверено на IOS
демо: https://jsfiddle.net/jd7q25hg/12/
источник
В 2018 году вам не нужен jQuery для чего-то простого. Встроенный
scrollIntoView()
метод поддерживаетbehavior
свойство " " для плавной прокрутки к любому элементу на странице. Вы даже можете обновить URL браузера с помощью хэша, чтобы сделать его доступным для закладки.Из этого урока по прокрутке HTML-закладок можно родным способом автоматически добавить плавную прокрутку ко всем ссылкам на вашей странице:
источник
Плавно прокрутите до нужной позиции (2019)
Получить правильную
y
координату и использоватьwindow.scrollTo({top: y, behavior: 'smooth'})
Со смещением
scrollIntoView
это тоже хороший вариант, но в некоторых случаях он может не работать идеально. Например, когда вам нужно дополнительное смещение . СscrollTo
вами просто нужно добавить , что смещение , как это:источник
css html { scroll-behavior: smooth; }
источник
Решение от CSS-Tricks больше не работает в jQuery 2.2.0. Это вызовет ошибку селектора:
Я исправил это, изменив селектор. Полный фрагмент этого:
источник
Большинство ответов излишне сложны.
Если вы просто хотите перейти к целевому элементу, вам не нужен JavaScript:
Если вы хотите анимировать прокрутку к цели , обратитесь к ответу @ Shahil.
источник
Это работает:
https://jsfiddle.net/68pnkfgd/
Просто добавьте класс «прокрутка» к любым ссылкам, которые вы хотите анимировать
источник
Это рабочий скрипт, который прокрутит страницу до якоря. Для настройки просто присвойте ссылке привязки идентификатор, соответствующий атрибуту имени привязки, на которую вы хотите перейти.
источник
Я знаю, что это действительно старый вопрос, но я нашел простое и простое решение jQuery в css-tricks . Это тот, который я использую сейчас.
источник
источник
решение vue2 ... добавить простое свойство данных, чтобы просто принудительно обновить
источник
Самый простой способ заставить браузер прокручивать страницу до заданной привязки - это ввести свой style.css * {scroll-поведения: smooth;} и в своей html-навигации использовать #NameOfTheSection
источник