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

автор: Bond

Порада

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

автор: Bond
Порада

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

автор: Bond
Порада

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

автор: Bond

Синтаксис

element.style.backgroundAttachment

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 3.5 12 4
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 3.2

Приклади

+ запропонувати свій приклад у пісочниці

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

HTML

<div id="myElement">Демонстраційний елемент</div>

JS

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

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

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

автор: Bond

У цьому прикладі ми отримуємо всі секції з класом .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';
    }
  });
});
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід