Як додати клас під час прокручування сторінки

Владимир Самойлов
Дата: 22.08.2022
Коментарів: 0
Переглядів: 23956
Зміст:

Розберемо таке завдання: потрібно додати клас заданому елементу (наприклад header) при скролі сторінки.

Приступимо. Таке завдання ми можемо вирішити за допомогою JavaScript. Я пропишу два варіанти рішення – на чистому JS та з використанням бібліотеки JQUERY.

Додаємо клас елементу при скролі сторінки (Чистий JavaScript):

//Записуємо, скільки проскролено по вертикалі
let scrollpos = window.scrollY

const header = document.querySelector("header")

//Скільки пікселів потрібно проскроліть, щоб додати клас. Можете змінити значення
const scrollChange = 1

//Функція, яка додаватиме клас
const add_class_on_scroll = () => header.classList.add("bg-red")

//Відслідковуємо подію "скрол"
window.addEventListener('scroll', function() { 
  scrollpos = window.scrollY;

  //Якщо прокрутили більше, ніж ми вказали в змінній scrollChange, то виконується функція додавання класу
  if (scrollpos >= scrollChange) { add_class_on_scroll() }
})

Давайте покращимо цей код і зробимо так, що якщо проскролили менше 1px, то клас видаляється:

let scrollpos = window.scrollY

const header = document.querySelector("header")
const scrollChange = 1

const add_class_on_scroll = () => header.classList.add("bg-red")
const remove_class_on_scroll = () => header.classList.remove("bg-red")

window.addEventListener('scroll', function() { 
  scrollpos = window.scrollY;

  if (scrollpos >= scrollChange) { add_class_on_scroll() }
  else { remove_class_on_scroll() }
  
})

Тут ми додали нову функцію remove_class_on_scroll, яка видаляє певний клас із вибраного елемента. Ця функція буде виконуватися в тому випадку, якщо користувач не проскролив 1px від початку сторінки.

Тепер те саме напишемо на JQUERY:

var header = $(".header");
var scrollChange = 1;
$(window).scroll(function() {
    var scroll = $(window).scrollTop();

    if (scroll >= scrollChange) {
        header.addClass('bg-red');
    } else {
        header.removeClass("bg-red");
    }
});

Тут ми прописали те саме, якщо користувач прокрутив більше 1px сторінки, то до header ми додаємо клас bg-red. Якщо менше прокрутив – видаляємо клас.

Ось так легко можна додати або видалити клас будь-якого елемента під час скролу сторінки.

Стаття була корисною?
👍
Так - 31
👎
Ні - 16
Коментарі: