Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS властивість CSSStyleDeclaration.backgroundAttachment

Загальний опис

backgroundAttachment є властивістю об'єкта style, що належить до будь-якого HTML-елемента. Ця властивість дозволяє встановлювати або отримувати значення властивості CSS background-attachment, яка визначає, чи фонове зображення прокручується разом із вмістом елемента або залишається нерухомим при прокручуванні. Основна суть backgroundAttachment полягає в тому, щоб контролювати поведінку фону під час прокручування, що може бути корисним для створення ефекту паралакса та інших візуальних ефектів на веб-сторінках.

Основні сфери застосування backgroundAttachment включають веб-дизайн, де необхідно створити візуальні ефекти фону, який залишається нерухомим (fixed) або прокручується (scroll) разом із вмістом. Це може бути використано для виділення певних розділів сторінки, покращення користувацького досвіду або створення цікавих анімаційних ефектів.

Розглянемо приклади використання backgroundAttachment від найпростіших випадків до складніших.

Перший приклад показує, як встановити фон, що залишається нерухомим при прокручуванні сторінки:

<!DOCTYPE html>
<html>
<head>
<style>
  #myDiv {
    width: 100%;
    height: 300px;
    border: 1px solid black;
    background-image: url('background.jpg');
  }
</style>
</head>
<body>

<div id="myDiv">Це див</div>
<button onclick="setFixedBackground()">Зробити фон нерухомим</button>

<script>
  function setFixedBackground() {
    let element = document.getElementById('myDiv');
    element.style.backgroundAttachment = 'fixed';
  }
</script>

</body>
</html>

У цьому прикладі, коли користувач натискає кнопку, викликається функція setFixedBackground, яка встановлює значення backgroundAttachment на fixed. Це означає, що фонове зображення залишиться нерухомим при прокручуванні сторінки.

Далі розглянемо приклад, де фон елемента прокручується разом із вмістом:

let element = document.getElementById('myDiv');
element.style.backgroundAttachment = 'scroll';

У цьому випадку, при натисканні на кнопку, викликається функція setScrollBackground, яка встановлює значення backgroundAttachment на scroll. Це означає, що фонове зображення буде прокручуватися разом із вмістом елемента.

Також можливе встановлення значення local, яке фіксує фонове зображення відносно елемента, а не всієї сторінки:

let element = document.getElementById('myDiv');
element.style.backgroundAttachment = 'local';

У цьому прикладі, при натисканні на кнопку, викликається функція setLocalBackground, яка встановлює значення backgroundAttachment на local. Це означає, що фонове зображення буде прокручуватися разом із вмістом елемента, але не всієї сторінки.

Таким чином, властивість backgroundAttachment є потужним інструментом для керування поведінкою фону елементів під час прокручування. Це дозволяє розробникам створювати багаті візуальні ефекти та покращувати користувацький досвід, забезпечуючи гнучкість і контроль над стилями фону в веб-додатках.

Порада:

Якщо ви використовуєте background-attachment: fixed на body, пам'ятайте, що фонове зображення може відображатися поверх інших елементів на сторінці. Для уникнення цього, встановлюйте фіксовані фони на внутрішніх контейнерах замість body.

Порада:

Порада 4: backgroundAttachment працює лише з фоновими зображеннями, встановленими за допомогою url(). Якщо ви використовуєте градієнти або кольори як фон, ця властивість не матиме ніякого ефекту. Для фіксованих градієнтів або кольорів використовуйте background-attachment на body.

Порада:

Значення element.style.backgroundAttachment = "scroll" (за замовчуванням) зробить фонове зображення прокручуваним разом із вмістом елемента. Це корисно для створення суцільного фону для блоків тексту або інших елементів, які можуть бути довгими.

Синтаксис

element.style.backgroundAttachment

Значення

Return

Переглядачі

Переглядач

1

1

3

8

12

Переглядач

4.4

18

4

1

Переглядач

-

-

Приклади


У цьому прикладі користувач може вибрати різні режими backgroundAttachment через випадаюче меню (scroll, fixed, local) та побачити, як фон веде себе при прокручуванні. Наприклад, при виборі fixed фон залишатиметься зафіксованим, тоді як зміна на scroll змусить фон прокручуватися разом зі сторінкою. Цей приклад допомагає краще зрозуміти, як ця властивість впливає на взаємодію фону з прокруткою сторінки.

У цьому прикладі ми отримуємо доступ до елемента за його id та встановлюємо фіксоване фонове зображення, використовуючи властивості backgroundImage та element.style.backgroundAttachment = 'fixed'. Це створить паралаксний ефект, коли зображення залишатиметься нерухомим під час прокручування вмісту.

const element = document.getElementById('myElement');

// Встановлюємо фіксоване фонове зображення
element.style.backgroundImage = 'url("image.jpg")';
element.style.backgroundAttachment = 'fixed';

У цьому прикладі ми отримуємо всі секції з класом .section та для кожної секції встановлюємо фіксоване фонове зображення на основі атрибута data-image елемента .bg-image. Ми також додаємо обробник події для прокручування, який перевіряє, чи секція видима у вікні, і динамічно змінює властивість backgroundAttachment на 'fixed' або 'scroll' відповідно.

Цей приклад демонструє більш складне використання backgroundAttachment, де властивість змінюється динамічно залежно від положення секції на сторінці. Це може бути корисно для створення ефекту паралаксу, коли фонові зображення фіксуються лише тоді, коли відповідні секції видимі у вікні.

const sections = document.querySelectorAll('.section');

sections.forEach(section => {
  const bgImage = section.querySelector('.bg-image');

  // Встановлюємо фіксоване фонове зображення для кожної секції
  bgImage.style.backgroundImage = `url('${bgImage.dataset.image}')`;
  bgImage.style.backgroundAttachment = 'fixed';

  // Додаємо обробник події для прокручування
  window.addEventListener('scroll', () => {
    const scrollPosition = window.pageYOffset;
    const sectionTop = section.offsetTop;
    const sectionHeight = section.offsetHeight;

    // Перевіряємо, чи секція видима у вікні
    if (scrollPosition >= sectionTop && scrollPosition < sectionTop + sectionHeight) {
      bgImage.style.backgroundAttachment = 'fixed';
    } else {
      bgImage.style.backgroundAttachment = 'scroll';
    }
  });
});