Интернет. Настройки. Тарифы. Телефон. Услуги

Javascript скролл к элементу. Скроллинг к элементу страницы с помощью jQuery

Представляю огромный список плагинов прокрутки на jQuery для вашего сайта. Различные трюки с прокруткой пришли к нам из-за рубежа не так давно и оцепили ряд современных порталов и сайтов, которые хотели выделиться. Работа над вертикальной прокруткой вполне может повысить конверсию и несомненно впечатление пользователя. Благодаря интересным подходам JS + CSS3 Вы можете улучшить интерфейс своего сайта. Если добавить немного фантазии, то можно из любого плагина получить что-то уникальное для своего сайта. Ведь каждый сайт старается выделиться из серой массы разными способами. Благодаря прокрутке, можно некоторые страницы перенести на страницу, с реализованным плагином, что улучшит получение важной информации пользователем. Данная технология лучше всего подойдет для различных портфолио или же демонстрации какого-либо продукта и т.д.

Переходим непосредственно к делу.

Sly

Sly — это библиотека JavaScript для расширенной однонаправленной прокрутки с поддержкой навигации по элементам. Его можно использовать как простую замену прокрутки, так и инструмент навигации, или как отличный интерфейс навигации и анимации для сайтов параллакса.

jQuery Scroll Path

Это плагин для определения пользовательских путей прокрутки.

windows

AnimateScroll

AnimateScroll — это плагин jQuery, который позволяет вам прокручивать на любую часть страницы, просто вызывая функцию animatescroll () с идентификатором или классом элемента, на который вы хотите перейти.

ScrollMe

По мере прокрутки страницы ScrollMe может масштабировать, поворачивать, переводить и изменять прозрачность элементов на странице. Его легко настроить, и не требуется ни одна строка javascript.

stickUp

Простой плагин, который «прикрепляет» элемент к верхней части окна браузера, прокручивая его, всегда сохраняя его в поле зрения. Этот плагин работает на многостраничных сайтах, но имеет дополнительные возможности для макетов с одним пейджером.

Block Scroll

Block Scroll — это плагин jQuery, который превращает набор элементов в блоки и отображает их по одному экрану за раз. Идея состоит в том, чтобы разбить вашу страницу на куски для лучшего представления и потока пользователей. Блокировка прокрутки автоматически изменяет вашу страницу.

Starscroll

Создайте div в качестве фона … активируйте плагин; анимация при прокрутке. Плагин автоматически установит div, чтобы он работал невидимым.

Scrolldeck

Scrollocue

Scrollocue — это плагин jQuery для создания простой системы autocue / teleprompter для прокрутки строк текста.

scrollorama

Stellar.js

Stellar.js — это плагин jQuery, который обеспечивает эффекты прокрутки параллакса для любого элемента прокрутки.

Super scroll orama

Parallax

Responsive 3d Fold Scroll

jQuery Scrollify

Плагин jQuery, который помогает прокручивать и привязывать к разделам. Совместим с Touch.

vivus.js

Vivus — это легкий класс JavaScript (без зависимостей), который позволяет вам анимировать SVG, давая им возможность рисования.

jQuery slimScroll

slimScroll — небольшой (4.6KB) плагин jQuery, который преобразует любой div в прокручиваемую область с красивой полосой прокрутки.

jQRangeSlider

jQuery.pin

Вы когда-нибудь хотели прикрепить что-то к стороне текста? Вам когда-нибудь был нужен тонкий липкий элемент, который бы спокойно был закреплен, пока вы прокручиваете вниз?

jQuery.Pin здесь, чтобы помочь! Вставьте любой элемент в верхнюю часть контейнера. Легко отключите его для меньших размеров экрана, где нет места для такого рода махинаций.

Infinite AJAX Scroll

Overscroll

Overscroll — это плагин jQuery и polyfill для стиля прокрутки Safari mobile. Он предназначен для использования в настольных браузерах с последней версией jQuery.

jQuery.localScroll

Parallax ImageScroll – jQuery plugin

JQuery и совместимый с amd плагин для создания эффекта параллакса, как показано на сайте spotify.com.

fullPage.js

Легкий и простой в использовании плагин для создания полноэкранных прокручивающихся веб-сайтов (также известных как веб-сайты одной страницы, landing page), также можно добавлять некоторые горизонтальные слайдеры внутри разделов сайта.

Parallax.js

Jarallax

Jarallax — это библиотека JavaScript с открытым исходным кодом, которая упрощает настройку css на основе взаимодействия. С Jarallax легко создать веб-сайт с прокруткой параллаксом

jInvertScroll

Jquery fullContent.js

JQuery Full Content позволяет полностью создавать веб-сайты.

jQuery One Page Scroll

Создайте веб-сайт со скроллингом на одной странице (веб-сайт iPhone 5S) с плагином прокрутки одной страницы.

jQuery Parallax Plugin

jQuery Parallax — это сценарий, который имитирует эффект параллакса, как показано на nikebetterworld.com.

jquery.parallax.js

jquery.arbitrary-anchor.js

Portfoliojs

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

Scrolling Parallax Plugin

Scrolling Parallax — новый плагин jQuery, который связывает эффект параллакса с полосами прокрутки и колесиком мыши. Это позволяет фоновому изображению или чему-либо еще прокручиваться в разном темпе, чем веб-страница, когда пользователь прокручивает. Эффект параллакса, который является результатом, — это простой способ создать иллюзию глубины на вашем веб-сайте.

Scrolltab

Scrolly

skrollr

Отдельная библиотека прокрутки параллакса для мобильных устройств (Android + iOS) и пк. Нет jQuery. Просто обычный JavaScript (и некоторая магия).

SMINT

Smint — это простой плагин jQuery, который помогает при навигации на веб-сайтах с одной страницей.

jQuery custom content scroller

Детально настраиваемый пользовательский плагин jQuery для прокрутки. Особенности включают в себя вертикальную и / или горизонтальную полосу прокрутки, настраиваемый импульс прокрутки, колесо мыши (через плагин jQuery mousewheel), поддержку клавиатуры и сенсорного экрана, готовые к использованию темы и настройку с помощью CSS, поддержку направления RTL, параметры опций для полного управление функциями прокрутки, методы запуска таких действий, как прокрутка, обновление, уничтожение и т. д.

ScrollUpBar Plugin

Плагин прокрутки вверх (jQuery) скрывает верхнюю панель при прокрутке вниз и показывает ее при прокрутке вверх. Это особенно полезно на мобильных интерфейсах, чтобы сэкономить драгоценное пространство.

StickyTableHeaders

jQuery panelSnap

isInViewport.js

Waterfall

Плагин jquery waterfall , такой как Pinterest, huaban.com, faxianla.com

Scroller

jQuery.SerialScroll

jScroll

jScroll — это плагин jQuery для бесконечной прокрутки, написанный Филиппом Клаузинским. Бесконечная прокрутка; также известная как ленивая загрузка, бесконечная прокрутка, автопир, бесконечные страницы и т. д.

FoldScroll

scrollUp jQuery plugin

ScrollUp — это легкий плагин jQuery для создания настраиваемой функции «Прокрутка вверх», которая будет работать с любым веб-сайтом с легкостью.

multiScroll.js

Создавайте разделенные страницы с двумя вертикальными панелями прокрутки. Совместимость с мобильными телефонами и устройствами и старыми баузерами, такими как IE 8.

Any List Scroller

qpScroll

qpScroll — это плагин jQuery, который создает фон параллакса для любой страницы или div. Его очень легко настроить. Он может быть добавлен на любую существующую страницу без необходимости изменения маркировки HTML.

jQuery Stick ’em

Parallax.js

Parallax Engine реагирует на ориентацию смарт-устройства. Там, где нет оборудования для обнаружения гироскопа или обнаружения движения, вместо этого используется позиция курсора.

Slinky.js

Slinky.js — это плагин jQuery для создания красивых списков навигации для прокрутки с заголовками штабелирования.

Infinity.js

Infinity.js — это UITableView для Интернета: он ускоряет прокрутку по длинным спискам и сохраняет ваши бесконечные каналы бесперебойными и стабильными для ваших пользователей. Он небольшой, проверенный временем и высокоэффективный.

Arbitrary Anchor

Waypoints

Waypoints — это библиотека, которая упрощает выполнение функции всякий раз, когда вы переходите к элементу.

jQuery.kinetic

Scrolling Progress Bar

Есть два компонента этого эффекта. Содержание и бары. Каждый раздел содержимого имеет идентификатор, который помогает вычислять процент. Каждый бар имеет ссылку, чтобы сгладить прокрутку к этому разделу.

jQuery Smooth Div Scroll

Smooth Div Scroll — это плагин jQuery, который прокручивает содержимое по горизонтали влево или вправо.

jQuery Story Tale

Простой плагин jQuery, расширяющий плагин animateScroll с возможностями одиночной страницы.

jQuery Animation Scroll Plugin

jQuery.ScrollTo

Endless Scroll jQuery Plugin

Бесконечная прокрутка (или infinite scrolling) является популярным методом среди веб-сайтов 2.0, таких как Google Reader и Live Image Search, где вместо подкачки через элементы, используя традиционную технику разбиения на страницы, страница просто продолжает загружать новые элементы, прикрепленные к концу.

У меня есть этот элемент input:

Затем у меня есть другие элементы, такие как другие текстовые входы, текстовые поля и т.д.

Когда пользователь нажимает на input с #subject , страница должна прокручиваться до последнего элемента страницы с помощью приятной анимации. Это должен быть свиток вниз и не вверх.

Последний элемент страницы - это кнопка submit с #submit:

Анимация не должна быть слишком быстрой и должна быть текучей.

Я запускаю последнюю версию jQuery. Я предпочитаю не устанавливать какой-либо плагин, но использовать функции jQuery по умолчанию для достижения этого.

30 ответов

Предполагая, что у вас есть кнопка с button id, попробуйте этот пример:

$("#button").click(function() { $().animate({ scrollTop: $("#elementtoScrollToID").offset().top }, 2000); });

Я написал этот легкий плагин, чтобы упростить прокрутку страницы/элемента. Он гибкий, где вы могли бы пройти в целевом элементе или заданном значении. Возможно, это может стать частью следующего официального релиза jQuery, что вы думаете?

Примеры использования

$("body").scrollTo("#target"); // Scroll screen to target element $("body").scrollTo(500); // Scroll screen 500 pixels down $("#scrollable").scrollTo(100); // Scroll individual element 100 pixels down

Параметры:

scrollTarget: элемент, строка или номер, который указывает желаемую позицию прокрутки.

offsetTop: число, определяющее дополнительный интервал выше цели прокрутки.

duration: строка или число, определяющее, как долго будет выполняться анимация.

easing: строка, указывающая, какую функцию ослабления использовать для перехода.

complete: функция для вызова после завершения анимации.

Если вас мало интересует эффект гладкой прокрутки и просто интересуется прокруткой к определенному элементу, для этого вам не требуется некоторая функция jQuery. Javascript имеет ваше дело:

Итак, все, что вам нужно сделать, это: $("selector").get(0).scrollIntoView();

Get(0) используется, потому что мы хотим получить элемент DOM JavaScript, а не элемент DOM JQuery.

Используя этот простой script

If($(window.location.hash).length > 0){ $("html, body").animate({ scrollTop: $(window.location.hash).offset().top}, 1000); }

Сделал бы в сортировке, что, если в URL-адресе найден хэш-тег, scrollTo анимирует идентификатор. Если не найден хэш-тег, то игнорируйте script.

  • Section 1
  • Section 2
  • Section 3

Решение Стива и Питера работает очень хорошо.

Но в некоторых случаях вам, возможно, придется преобразовать значение в целое число. Как ни странно, возвращаемое значение из $("...").offset().top иногда находится в float .
Использование: parseInt($("....").offset().top)

Например:

$("#button").click(function() { $("html, body").animate({ scrollTop: parseInt($("#elementtoScrollToID").offset().top) }, 2000); });

Компактная версия "анимированного" решения.

$.fn.scrollTo = function (speed) { if (typeof(speed) === "undefined") speed = 1000; $("html, body").animate({ scrollTop: parseInt($(this).offset().top) }, speed); };

Основное использование: $("#your_element").scrollTo();

Если вы используете только прокрутку к элементу ввода, вы можете использовать focus() . Например, если вы хотите прокрутить до первого видимого ввода:

$(":input:visible").first().focus();

Или первый видимый вход в контейнер с классом.error:

$(".error:input:visible").first().focus();

В большинстве случаев было бы лучше использовать плагин. Шутки в сторону. Я собираюсь . Конечно, есть и другие. Но, пожалуйста, проверьте, действительно ли они избегают ловушек, для которых вам нужен плагин в первую очередь - не все из них.

Я написал о причинах использования плагина в другом месте . В двух словах, один лайнер, лежащий в основе большинства ответов здесь

$("html, body").animate({ scrollTop: $target.offset().top }, duration);

Плохой UX.

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

    Если начальная точка анимации близка к целевому элементу, анимация мучительно медленная.

    Если целевой элемент расположен рядом с нижней частью страницы, его нельзя прокручивать в верхнюю часть окна. Анимация прокрутки резко останавливается, затем в середине движения.

Чтобы справиться с этими проблемами (и куча других), вы можете использовать мой плагин, jQuery.scrollable . Затем вызов будет

$(window).scrollTo(targetPosition);

Что касается целевой позиции, $target.offset().top выполняет работу в большинстве случаев. Но имейте в виду, что возвращаемое значение не принимает во внимание элемент html (см. эту демонстрацию). Если вам нужно, чтобы целевая позиция была точной при любых обстоятельствах, лучше использовать

TargetPosition = $(window).scrollTop() + $target.getBoundingClientRect().top;

Это работает, даже если установлена ​​граница с элементом html .

Это мой подход, абстрагирующий идентификатор и href"s, используя универсальный селектор классов

$(function() { // Generic selector to be used anywhere $(".js-scroll-to").click(function(e) { // Get the href dynamically var destination = $(this).attr("href"); // Prevent href="#" link from changing the URL hash (optional) e.preventDefault(); // Animate scroll to destination $("html, body").animate({ scrollTop: $(destination).offset().top }, 500); }); });

Очень простой и простой в использовании пользовательский плагин jQuery. Просто добавьте атрибут scroll= в свой элемент clickable и установите его значение для селектора, который вы хотите прокрутить.

Так же: Click me . Он может использоваться для любого элемента.

(function($){ $.fn.animateScroll = function(){ console.log($("")); $("").click(function(){ selector = $($(this).attr("scroll")); console.log(selector); console.log(selector.offset().top); $("html body").animate({scrollTop: (selector.offset().top)}, //- $(window).scrollTop() 1000); }); } })(jQuery); // RUN jQuery(document).ready(function($) { $().animateScroll(); }); // IN HTML EXAMPLE // RUN ONCLICK ON OBJECT WITH ATTRIBUTE SCROLL=".SELECTOR" // Click To Scroll

анимаций:

// slide to top of the page $(".up").click(function () { $("html, body").animate({ scrollTop: 0 }, 600); return false; }); // slide page to anchor $(".menutop b").click(function(){ //event.preventDefault(); $("html, body").animate({ scrollTop: $($(this).attr("href")).offset().top }, 600); return false; }); // Scroll to class, div $("#button").click(function() { $("html, body").animate({ scrollTop: $("#target-element").offset().top }, 1000); }); // div background animate $(window).scroll(function () { var x = $(this).scrollTop(); // freezze div background $(".banner0").css("background-position", "0px " + x +"px"); // from left to right $(".banner0").css("background-position", x+"px " +"0px"); // from right to left $(".banner0").css("background-position", -x+"px " +"0px"); // from bottom to top $("#skills").css("background-position", "0px " + -x + "px"); // move background from top to bottom $(".skills1").css("background-position", "0% " + parseInt(-x / 1) + "px" + ", 0% " + parseInt(-x / 1) + "px, center top"); // Show hide mtop menu if (x > 100) { $(".menu").addClass("menushow"); $(".menu").fadeIn("slow"); $(".menu").animate({opacity: 0.75}, 500); } else { $(".menu").removeClass("menushow"); $(".menu").animate({opacity: 1}, 500); } }); // progres bar animation simple $(".bar1").each(function(i) { var width = $(this).data("width"); $(this).animate({"width" : width + "%" }, 900, function(){ // Animation complete }); });

$("html, body").animate(...) не для меня на iphone, браузере браузера Chrome Chrome.

Мне нужно было настроить целевой элемент контента на странице.

$("# cotnent"). Анимировать (...)

Вот что я закончил с

If (navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/)) { $("#content").animate({ scrollTop: $("#elementtoScrollToID").offset().top }, "slow"); } else{ $("html, body").animate({ scrollTop: $("#elementtoScrollToID").offset().top }, "slow"); }

Содержимое всего тела, связанное С#content div

.... ....

Если вы хотите выполнить прокрутку в контейнере переполнения (вместо $("html, body") , который был указан выше), работая также с абсолютным позиционированием, это способ:

Var elem = $("#myElement"), container = $("#myScrollableContainer"), pos = elem.position().top + container.scrollTop() - container.position().top; container.animate({ scrollTop: pos }

jQuery(document).ready(function($) { $("a").bind("click.smoothscroll",function (e) { e.preventDefault(); var target = this.hash, $target = $(target); $("html, body").stop().animate({ "scrollTop": $target.offset().top-40 }, 900, "swing", function () { window.location.hash = target; }); }); });

  • Section 1
  • Section 2
  • Section 3

$("html, body").animate({scrollTop: Math.min($(to).offset().top-margintop, //margintop is the margin above the target $("body").scrollHeight-$("body").height()) //if the target is at the bottom }, 2000);

Чтобы показать полный элемент (если возможно, с текущим размером окна):

Var element = $("#some_element"); var elementHeight = element.height(); var windowHeight = $(window).height(); var offset = Math.min(elementHeight, windowHeight) + element.offset().top; $("html, body").animate({ scrollTop: offset }, 500);

Я написал функцию общего назначения, которая прокручивает объект jQuery, селектор CSS или числовое значение.

Пример использования:

// scroll to "#target-element": $.scrollTo("#target-element"); // scroll to 80 pixels above first element with class ".invalid": $.scrollTo(".invalid", -80); // scroll a container with id "#my-container" to 300 pixels from its top: $.scrollTo(300, 0, "slow", "#my-container");

Код функции:

/** * Scrolls the container to the target position minus the offset * * @param target - the destination to scroll to, can be a jQuery object * jQuery selector, or numeric position * @param offset - the offset in pixels from the target position, e.g. * pass -80 to scroll to 80 pixels above the target * @param speed - the scroll speed in milliseconds, or one of the * strings "fast" or "slow". default: 500 * @param container - a jQuery object or selector for the container to * be scrolled. default: "html, body" */ jQuery.scrollTo = function (target, offset, speed, container) { if (isNaN(target)) { if (!(target instanceof jQuery)) target = $(target); target = parseInt(target.offset().top); } container = container || "html, body"; if (!(container instanceof jQuery)) container = $(container); speed = speed || 500; offset = offset || 0; container.animate({ scrollTop: target + offset }, speed); };

В последнее время бешеной популярностью пользуются типы сайтов под названием Landing Page - или "лендинги". Они удобны тем, что пользователь получает всю необходимую информацию на одной странице. Чаще всего это информация о товаре, которая описывает его со всех сторон, дает понять сильные стороны и преимущества и конечно же оформить заказ.

Такие сайты получаются довольно длинными, поэтому для удобства перемещения по ним часто делают навигационное меню со ссылками на конкретные разделы. Давайте научимся делать так, чтобы при клике на ссылку, сайт плавно прокручивался до нужного места.

$("a" ) .click (function () { var elementClick = $(this ) .attr ("href" ) ; var destination = $(elementClick) .offset () .top ; $("html, body" ) .animate ({ scrollTop: destination } , 600 ) ; return false ; } ) ; Альтернативный взгляд

Раньше делали немного по другому - использовали определение браузера - $.browser.safari || $.browser.webkit и в зависимости от условия делали либо $("body").animate() , либо $("html").animate() . С версии 1.9 jQuery - $.browser была удалена и поэтому не сработает. Но можно модифицировать код и получить такой скрипт:

var matched, browser; jQuery.uaMatch = function ( ua ) { ua = ua.toLowerCase () ; var match = /(chrome)[ \/]([\w.]+)/ .exec ( ua ) || /(webkit)[ \/]([\w.]+)/ .exec ( ua ) || /(opera)(?:.*version|)[ \/]([\w.]+)/ .exec ( ua ) || /(msie)[\s?]([\w.]+)/ .exec ( ua ) || /(trident)(?:.*? rv:([\w.]+)|)/ .exec ( ua ) || ua.indexOf ("compatible" ) < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/ .exec ( ua ) || ; return { browser: match[ 1 ] || "" , version: match[ 2 ] || "0" } ; } ; matched = jQuery.uaMatch ( navigator.userAgent ) ; //IE 11+ fix (Trident) matched.browser = matched.browser == "trident" ? "msie" : matched.browser ; browser = { } ; if ( matched.browser ) { browser[ matched.browser ] = true ; browser.version = matched.version ; } $("a" ) .click (function () { var elementClick = $(this ) .attr ("href" ) ; var destination = $(elementClick) .offset () .top ; if (browser.chrome || browser.webkit ) { $("body" ) .animate ({ scrollTop: destination } , 600 ) ; } else { $("html" ) .animate ({ scrollTop: destination } , 600 ) ; } return false ; } ) ;

Вот и все. Всем успехов!

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

Вот скрипт, который нам понадобится.

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

Внутри функции в первой строке создается переменная offset со значение 0.

animate – позволяет выполнить пользовательскую анимацию основанную на изменении CSS свойств для выбранных элементов.

scrollTop – получает значение отступа прокрутки сверху для первого элемента в наборе.

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

Как это работает?

Давайте напишем тестовый код, на котором мы попробуем наш скрипт в работе.

Document #block1 { margin: 1200px 0px 100px 0px ; } Заказать звонок! Привет! function slowScroll(id) { var offset = 0; $("html, body").animate({ scrollTop: $(id).offset().top - offset }, 1000); return false; }

Здесь обычный HTML шаблон.

Для того чтобы скрипт работал, вам необходимо подключить библиотеку jquery.

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

Заказать звонок!

В атрибуте href указываем блок к которому нам нужно сделать переход, это прописывается на случай если плавный скролл не сработает, чтобы пользователя все ровно перенесло на выбранный блок. В событии onclick мы указываем название функции и в качестве параметра указываем id блока на который нужно сделать плавный переход.