Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

scroll js

scroll js

Всем привет и пожалуй приступим. Прежде развернем определение что такое scroll.

Скрол это прокрутка которая дает возможность перелистывать-перемещать-прокручивать строку или страницу. Если простым языком когда вы используете колесико мыши или введете ползунок вы по сути скролите(пользуетесь прокруткой скролом).

В JavaScript есть множество свойств и методов для работы со скролом, все мы рассматривать не будем разберем лишь самые полезные, на примере кода:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Скрол в js</title>
</head>
<style>
    body{
        height:2000px;
    }
    div{
        margin:100px;
        height:200px;
        overflow:auto;
        border:1px solid #000;
    }
    .scrollTop{
        position:fixed;
        right:20px;
        bottom:20px;
        cursor:pointer;
        height:20px;
    }
</style>
<body >
<div >

    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
    Метод принимает только один необязательный параметр, который задает, будет ли текущий элемент страницы перехватывать все события, вызванные дочерними элементами (значение true, используемое по умолчанию), или нет (значение false).
    Если параметр равен false, то события направляются соответствующим элементам и потом постепенно "всплывают" к родителям (обычное поведение событий).
    Метод не возвращает значения.
    Поддерживается IE начиная с 4.0
</div>
<div class="scrollTop" >Вверх</div>
</body>
</html>

Первое что мы рассмотрим это как найти позицию скрола:

window.pageYOffset;

нам вернется значение позиции скрола в пикселях.

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

window.onscroll = function() {
    var scrolled = window.pageYOffset;
    console.log( 'Позиция скрола: '+scrolled  );
};

Как видите при прокрутке страницы позиция выводится в консоль. Но что если нам необходимо определить позицию скрола относительно элемента.

Допустим у нас есть элемент у которого также есть полоса прокрутки и мы хотим обрабатывать событие скрол у этого элемента:

document.querySelector('div').addEventListener('scroll', function(){
    console.log('Позиция скрола у элемента: '+ this.scrollTop)
});

как видите мы обрабатываем событие scroll у блока div и для того чтобы найти значения скрола у этого элемента мы обращаемся к свойству scrollTop.

В принципе здесь ничего сложного нет. Теперь давайте поговорим как задавать значение позиции скрола.

Для этого существует метод scroll()

window.scroll(x, y);

В него, как вы наверное уже догадались, устанавливаются два обязательных числовых параметра:

x - значение позиции скрола по горизонтали

y - значение позиции скрола по вертикали

Рассмотрим на примере кнопки вверх, которая перемещает нас в начало страницы.

document.querySelector('.scrollTop').addEventListener('click', function(){
    var scrolled = window.pageYOffset;
    scrollTop(scrolled,1);
});

function scrollTop(endPos,i){
    setTimeout(function(){
        if(parseInt(endPos) > 0) {
            var y = parseInt(endPos) - 5 * parseInt(i);
            window.scroll(0, y); //Устанавливаем новую позицию вертикального скрола
            scrollTop(y,parseInt(i)+2);//Рекурсивный вызов функции
        }
    },10);

}

при нажатии на некую кнопку с классом scrollTop на плавно переносит в начало страницы.

Не пугайтесь я просто решил сделать плавный скрол на чистом js.

Ну вот в общем и все дорогие друзья надеюсь данная статья была полезна для вас.

Удачи!

Оцените статью:

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm