» » Плавная прокрутка страницы вверх на jQuery. Вертикальный скроллинг страницы средствами jQuery и кроссбраузерность А теперь подробнее

Плавная прокрутка страницы вверх на jQuery. Вертикальный скроллинг страницы средствами jQuery и кроссбраузерность А теперь подробнее
Как всё начиналось

HTML код кнопок:

Вверх

Вниз

CSS стили:

#up
{
width:60px;
height:60px;
position:fixed;
bottom:50px;
left:20px;
background-color:#000000;
border-radius:30px;
}
#down
{
width:60px;
height:60px;
position:fixed;
bottom:50px;
left:90px;
background-color:#000000;
border-radius:30px;
}
.pPageScroll
{
color:#FFFFFF;
font:bold 12pt "Comic Sans MS";
text-align:center;
}

В итоге мы имеем два круга с надписями «Вверх» и «Вниз» в левом нижнем углу браузера.

Проблемы начинаются Теперь начинается самое интересное – JavaScript, а точнее jQuery. Как известно, для организации скроллинга выполняются манипуляции над свойствами scrollTop и scrollLeft. В jQuery эти манипуляции осуществляются при помощи методов.scrollTop() и.scrollLeft() соответственно. Нас интересует только.scrollTop.
Первый, самый простой вариант скроллинга выглядел следующим образом:

//Обработка нажатия на кнопку "Вверх"
$("#up").click(function(){
//Необходимо прокрутить в начало страницы
$("body").animate({"scrollTop":0},"slow");
});

//Обработка нажатия на кнопку "Вниз"
$("#down").click(function(){
//Необходимо прокрутить в конец страницы
var height=$("body").height();
$("body").animate({"scrollTop":height},”slow”);
});

Всё, ну очень просто и незатейливо. Но, вот незадача, если в Chrom’е всё было довольно безоблачно и симпатично, в Oper’е тоже довольно сносно (прокрутка вверх осуществлялась мгновенно), то «ВредныйЛис» скролиться отказывался напрочь. Не долго думая, заменив в строчке: $(«body»).animate «body» на «html», я изменил ситуации кардинально: FireFox заработал, Opera перестал рывком прокручивать вверх и стал делать это плавно, но теперь уже Chrome перестал реагировать на манипуляции с кнопками. Из приведённых выше мытарств последовал следующий вариант перевариваемый всеми браузерами: $(«html,body»).animate… Других приемлемых способов осуществлять скроллинг, работающих во всех браузерах найдено не было.

Добавим рюшечек и бантиков С самой простой частью разобрались. Базовый функционал получен, теперь можно придумать, что-нибудь поинтереснее. Первое же, что бросается в глаза, так это скорость скроллинга. При наличии сколь бы то ни было насыщенного контента, использование скроллинга становится настоящим тестом на склонность к эпилепсии. Поэтому, хочется, чтобы скроллинг был более плавным. Решение в лоб, задать определённую константу времени за которое должен осуществляться скроллинг. Очевидный плюс: элементарность решения. Не менее очевидный минус: никак не учитывается объём контента. Разумное решение: вычислять время выполнения скроллинга в зависимости от размера контента. Приступим.
В код обоих кнопок нужно дописать, вычисление текущей позиции. Для этого как раз и используется jQuery() метод.scrollTop().
Здесь, появляются уже известные проблемы: $(«body»).scrollTop() работает только в Chrome, $(«html»).scrollTop() не работает в Chrome. Что, вообще говоря, удивляет, так как получается, что конструкцией $(«body»).animate({«scrollTop»:height},”slow”) в Opera мы можем скролить body, а при получении, свойство scrollTop тега body равно нулю, что, судя из описания element. scrollTop справедливо для элементов, которые скролить нельзя.
Вариант $(«body,html»).scrollTop() по понятным причинам нам не подходит. Ищем альтернативы. Оказывается, текущую позицию можно получить из объектов window и document, так чтобы это устраивало все браузеры. Думаю, следует упомянуть, что использование их для анимации (например вот так: $(document).animate.), ни к чему хорошему не приводит.
Итак, за рабочий вариант выяснения текущей позиции примем: $(document).scrollTop();
Теперь задумаемся над тем, как мы будем вычислять время. Вообще говоря решение тривиальное и известно каждому: время = путь/скорость. Для определения пути, нам как раз и нужна текущая позиция. Также, нужны координаты точки назначения. С кнопкой «Вверх» всё просто, координата точки назначения по вертикальной оси равна нулю, значит, путь равен текущему положению. Для кнопки «Вниз» всё немного сложнее, нам нужно получить «высоту» документа. Уже предвкушаем проблемы, да? Но нет, тут всё оказывается очень просто. Вполне подходящую высоту можно получить используя в качестве селектора «body», «html» или document.
Так. У нас есть путь, теперь нужна скорость. Здесь уже всё зависит лично от вас. Путём визуальных прикидок, мне показалась комфортной скорость 1.73 (цифра не имеет под собой никакого, сколь бы то ни было серьёзного обоснования и прикидывалась на глаз).Итоговый вариант Таким образом, рабочий код выглядит следующим образом:

$(document).ready(function(){
//Обработка нажатия на кнопку "Вверх"
$("#up").click(function(){
//Необходимо прокрутить в начало страницы

var scrollTime=curPos/1.73;
$("body,html").animate({"scrollTop":0},scrollTime);
});

//Обработка нажатия на кнопку "Вниз"
$("#down").click(function(){
//Необходимо прокрутить в конец страницы
var curPos=$(document).scrollTop();
var height=$("body").height();
var scrollTime=(height-curPos)/1.73;
$("body,html").animate({"scrollTop":height},scrollTime);
});
});

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

Резюме В итоге мы получили очень простую реализацию скроллинга страницы, которая работает в любом современном браузере.
Испытания проводились для DOCTYPE: XHTML 1.0 Strict в браузерах Chrome 10, Opera 10, Opera 11, Firefox 4, Internet Explorer 8, Internet Explorer 9. Некоторые проблемы:
  • border-radius как известно в IE8 не работает, но кроссбраузерность вёрстки это не тема данного топика.
  • В Opera 10 инструкция: $(«body,html»).animate({«scrollTop»:0},scrollTime); приводит к моментальному переходу в начало страницы. Эта проблема исчезает с переходом на Opera 11.

UPD: Поправлен итоговый пример.

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

Прежде чем мы начнем, можете посмотреть Demo.

Что ж, приступим…

Создавать будем следующее:

HTML

Разметка (HTML) страницы будет предельно проста.

Сперва создадим навигацию.

  • Paragraph 1
  • Paragraph 2
  • Paragraph 3
  • Paragraph 4
  • Paragraph 5

Что мы сделали: элемент nav имеет ширину 100% , то есть его ширина будет равна ширине родительского элемента. Для nav свойство position имеет значение fixed , поэтому при скроллинге страницы элемент nav будет всегда перед глазами пользователя. Чтобы создать навигацию мы в тег nav поместили тег ul .

Преимущества:

  • Если у пользователя выключен javascript, ссылки все равно работают.
  • При помощи jQuery мы будем считывать атрибут href с каждой ссылки.
  • Теперь, когда мы создали простую навигационную панель, можем заняться главным контентом страницы.

    Lorem ipsum dolor sit amet, consectetur adipiscing elit...

    In ut sapien sem, a convallis odio. Aenean consequat ornare egestas...

    Donec sodales diam et libero ultrices ornare...

    Phasellus dolor sem, pharetra nec scelerisque sit amet, consequat quis dolor...

    Proin varius pellentesque velit, at consequat risus hendrerit quis...

    Как видите, разметка предельно проста. Она состоит из блока content , который вмещает параграфы (p). Каждый параграф имеет свой id , связанный со ссылкой в нашей навигации.

    CSS

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

    Начнем со стилей главного контента страницы, что очень просто.

    Body { font-family: arial; font-size: 15px; line-height: 25px; color: #515151; background: #fdfdfd; } #content { width: 500px; margin: 0 auto; padding-top: 40px; height: 2000px; } #content p { margin-bottom: 25px; }

    В body определяем текст и цвета фона; блок content имеет ширину 500px и центрирован. Значение для padding-top у блока content равно 40рх – это сделано для того, чтобы навигация не блокировала верхние 40px контента. Высота равна 2000px , чтобы уместить контент и показать скроллинг. Хотя, как правило, в этом нет необходимости. Каждый параграф имеет свойство margin-bottom , равное 25px , чтобы можно было понять, где один параграф заканчивается и начинается другой.

    Теперь перейдем к навигации:

    Nav { width: 100%; position: fixed; height: 40px; background: white; border: 1px solid #CACACA; border-top: none; -webkit-box-shadow: 0px 0px 3px 1px #ebebeb; -moz-box-shadow: 0px 0px 3px 1px #ebebeb; box-shadow: 0px 0px 3px 1px #ebebeb; } nav ul { width: 750px; margin: 0 auto; } nav ul li{ float: left; width: 150px; text-align: center; } nav ul li a { line-height: 40px; font-size: 16px; text-decoration: none; color: #515151; border-bottom: 1px dotted #515151; } nav ul li a:hover{ color: #000; }

    Чтобы nav занимал всю ширину браузера, значение его ширины равно 100% . Чтобы nav оставался на экране монитора при скроллинге, он имеет объявление position:fixed . Высота равна 40рх, что вполне нормально для горизонтального верхнего меню. Для придания симпатичного вида был использован простой стиль. ul центрировано и имеет ширину 750рх, чтобы у каждой ссылке было достаточно места. Каждая li создана плавающей, поэтому все ссылки находятся на одной линии. Наконец, для ссылок также назначен простой стиль.

    jQuery

    Вот, как это будет работать: при клике (click) по навигационной ссылке произойдет скроллинг к тому параграфу, на который указывает ссылка.

    Как всегда, начнем с функции document.ready

    $(document).ready(function(){ });

    Теперь, прежде чем перейти к функцию click , напишем функцию scrollToDiv , которая будет осуществлять скроллинг к выбранному нами блоку. Параметров будет 2 – элемент, к котрому ведется скроллирование и высота навигацинной панели в верхней части страницы.

    Function scrollToDiv(element,navheight){ }

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

    Function scrollToDiv(element,navheight){ var offset = element.offset(); var offsetTop = offset.top; var totalScroll = offsetTop-navheight; }

    Переменная offset это смещение элемента. Ее использует переменная offsetTop , чтобы вытащить значение top . В результате чего получаем расстояние от верха страницы до элемента. Переменная totalScroll отвечает за расстояние, на которое браузеру необходимо прокрутить страницу. Без верхней панели навигации величина скроллирования будет равна величине offsetTop . Однако при вычислении переменной totalScroll нужно помнить, что наша навигационная панель блокирует верхние 40рх контента. Здесь нам поможет параметр navheight .

    Наконец, скроллируем страницу:

    $("body,html").animate({ scrollTop: totalScroll }, 500);

    Функция jQuery animate позволит нам реализовать плавный скроллинг к нужному нам месту страницы. В данном случае на анимацию уходит 500 миллисекунд.

    Свойство scrollTop позволяет задать величину, на которую необходимо прокрутить страницу (по вертикали).

    Вот полная функция scrollToDiv:

    Function scrollToDiv(element,navheight){ var offset = element.offset(); var offsetTop = offset.top; var totalScroll = offsetTop-navheight; $("body,html").animate({ scrollTop: totalScroll }, 500); }

    Перейдем к функции click .

    $("nav ul li a").click(function(){ return false; });

    Это только каркас функции click . Объявлением return false на конце, предотвратит переход браузера по ссылке.

    Прежде чем передать элемент функции, для него нужно найти имя.

    Var el = $(this).attr("href"); var elWrapped = $(el);

    Переменная el содержит значение атрибута href . Чтобы jQuery могла использовать переменную el , ее необходимо завернуть в elWrapped . Следующий код jQuery исполнить не может:

    #paragraph1.offset();

    Но может исполнить это:

    $("#paragraph1").offset();

    Вот, почему необходима переменная elWrapped .

    Полная функция click:

    $("nav ul li a").click(function(){ var el = $(this).attr("href"); var elWrapped = $(el); scrollToDiv(elWrapped,40); return false; });

    Вот и все – теперь у нас есть простая страница с ссылками, при клике по которым происходит скроллинг к нужной части страницы .

    У меня есть этот элемент 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); };

    Представляю огромный список плагинов прокрутки на 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, где вместо подкачки через элементы, используя традиционную технику разбиения на страницы, страница просто продолжает загружать новые элементы, прикрепленные к концу.

    Ты, конечно, встречал на страницах с большим количеством текста в самом низу ссылку «наверх». Или взять, допустим, содержание (при условии, что весь документ находится на одной длиннющей странице). Смысл примерно одинаков. Нажимаем на ссылку и попадаем в какое-то конкретное место документа. Фактически, программным образом перематываем скролл.

    Реализовать такое с помощью якоря — пара пустяков. А что если я хочу не мгновенно попасть в нужную точку, а именно «перемотать» скролл?

    Проверено в:

    • IE 6-8
    • Firefox 4
    • Opera 10
    • Safari 4
    • Chrome
    Задача

    Реализовать программную перемотку скролла.

    Решение

    Будем использовать специально для этого разработанный плагин jQuery.ScrollTo. Он умеет очень многое. Например, может перематывать как главный скролл окна, так и скролл какого-нибудь . Может перематывать в определенную позицию (в пикселях или процентах) или к какому нибудь конкретному элементу (заданному, например, по ). Все это уже создано, наша задача научится этим пользоваться.

    Что качать?
    • библиотеку jquery качаем или .
    • (2.26 Kb) собственно плагин.
    Быстрый старт

    Подключаем библиотеки:

    Прописываем в HTML кому-нибудь id — будем перематывать окно до этого элемента:

    Важный заголовок

    Задаем кнопку управления:

    Перемотать на важный заголовок

    При клике по кнопке включаем перемотку:

    jQuery(document).ready(function(){ jQuery("button").click(function() { jQuery.scrollTo("#target-el"); }); });

    А теперь подробнее

    Команда jQuery.scrollTo() будет перематывать главный скрорлл. Если нужно перемотать скролл какого-нибудь элемента, используем запись вида jQuery("селектор").scrollTo(), например:

    JQuery("div.pane").scrollTo("#target-el");

    Прараметры scrollTo()

    Ну и как обычно, вся магия — в парметрах:

    Название параметра Описание axis duration easing margin offset over queue onAfterFirst onAfter
    Ось, которая будет прокручиваться, "x", "y", "xy" или "yx". "xy" — значение по умолчанию
    Длительность анимации.
    Название уравнения easing.
    Если true, целевые границы и margin вычитаются.
    Чилсо или хэш {left: x, top:y }. Это значение будет добавлено к окончательной позиции (может быть отрицательным)
    Добавить часть высоты/ ширины элемента (также может быть отрицательным).
    Если true, и обе оси прокручиваться, то сначала анимируется прокрутка на одной оси, а затем на другой. Порядок задает паравитр axis ("xy" или "yx")
    Если queue=true, функция выполнится после прокрутки первой оси.
    Функция, которая вызывается после того, как закончится вся анимация.
    Подробнее про вызов scrollTo()

    При вызове scrollTo() передается три вида параметров — цель, продолжительность, настройки (порядок имеет значение).

    • цель — куда именно перематывать (подробнее см. ниже);
    • продолжительность — параметр duration из таблички выше;
    • настройки — остальные параметры из таблички выше.

    В качестве цели можно использовать:

    • Просто число
    • Строку ("44", "100px", "+=30px", и т.д.)
    • Элемент DOM (дочерний для прокручиваемого элемента)
    • Селектор
    • Строка "max" для прокрутки в конец
    • Строка, определяющая процент, чтобы перейти к части контейнера (например: 50% переходит в середину)
    • Хеш { top:x, left:y }, x и y может быть любое число/строка из описанных выше.

    Примеры вызова с параметрами.