
Фиксированный фон позволяет создать статичный визуальный слой, который не двигается при прокрутке страницы. Этот эффект часто применяют для баннеров, лендингов и промо-секций, где важно подчеркнуть визуальную композицию или контентный блок. Реализуется он через свойство background-attachment со значением fixed.
Чтобы зафиксировать фон, достаточно указать CSS-правило: background-attachment: fixed;. При этом полезно уточнить параметры background-position и background-size. Например, комбинация background-size: cover; и background-position: center; гарантирует корректное масштабирование и выравнивание изображения на любых экранах.
Стоит учитывать поведение на мобильных устройствах: в некоторых браузерах значение fixed игнорируется. В таких случаях можно применить альтернативу – закрепить фон через псевдоэлемент с position: fixed; и отрицательным z-index, чтобы сохранить визуальный эффект без потери адаптивности.
Фиксация фона не требует сложных решений, но точная настройка размеров, позиций и fallback-вариантов позволяет добиться стабильного и предсказуемого результата во всех современных браузерах.
Разница между свойствами background-attachment и background-position
Свойство background-attachment определяет, двигается ли фоновое изображение вместе с содержимым страницы. Значение scroll делает фон прокручиваемым, fixed – фиксирует его относительно области просмотра, а local связывает фон с прокручиваемым контейнером. Это свойство влияет только на поведение изображения при скролле.
Свойство background-position задаёт начальную точку размещения фона внутри элемента. Оно принимает координаты (например, center top или 10px 50%) и определяет, где именно на элементе появится изображение. В отличие от background-attachment, оно не связано с прокруткой, а отвечает за расположение изображения по осям X и Y.
Для точного контроля используют оба свойства вместе: background-attachment: fixed; позволяет зафиксировать изображение, а background-position: center top; – закрепить его в нужной точке экрана. Такое сочетание особенно полезно при создании эффектов параллакса или фоновых заголовков.
Как зафиксировать фон при прокрутке страницы

Самый простой способ – свойство background-attachment: fixed;. Работает в большинстве настольных браузеров и фиксирует фон относительно окна просмотра, а не элемента.
.hero {
background-image: url("bg.jpg");
background-attachment: fixed;
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
}
Ограничения на мобильных: iOS Safari и некоторые Android-браузеры игнорируют background-attachment: fixed или сильно снижают производительность. Для корректного поведения используйте условное отключение для узких экранов:
@media (max-width: 1024px) {
.hero { background-attachment: scroll; }
}
Надёжная альтернатива для кросс-браузерности – отдельный фиксированный блок, расположенный позади содержимого. Он даёт полный контроль и обычно быстрее при прокрутке:
.site-bg {
position: fixed;
inset: 0; /* top:0; right:0; bottom:0; left:0; */
background-image: url("bg.jpg");
background-size: cover;
background-position: center;
z-index: -1;
pointer-events: none;
}
Производительность и загрузка: используйте оптимизированные форматы (WebP/AVIF), задавайте точные размеры изображения и, при возможности, <link rel="preload" as="image" href="..."> в <head>. Большие изображения вызывают перерасчёты при прокрутке, поэтому фиксируйте фон одним элементом, а не для каждой секции.
Удобство и доступность: учитывайте @media (prefers-reduced-motion: reduce) – при уменьшенном движении переключайте эффект в статичный; следите за контрастом текста поверх фонового изображения и тестируйте на реальных устройствах перед публикацией.
Использование background-attachment: fixed для отдельных блоков

Свойство background-attachment: fixed можно применять не только к всей странице, но и к отдельным элементам. Однако эффект фиксированного фона будет заметен, только если у блока есть собственная область прокрутки или если он расположен на фоне, который движется независимо от содержимого.
Чтобы добиться корректного результата, блоку требуется явная высота и значение overflow: auto или overflow: scroll. Пример:
section {
height: 400px;
overflow: auto;
background-image: url('image.jpg');
background-attachment: fixed;
background-position: center;
background-size: cover;
}
В этом примере фон остаётся неподвижным при прокрутке содержимого внутри секции. Если установить background-attachment: fixed для элемента без прокрутки, эффект не проявится.
На мобильных устройствах фиксированный фон часто отключается по умолчанию для экономии ресурсов. В таких случаях можно использовать псевдоэлемент с абсолютным позиционированием и свойством background-attachment: scroll как альтернативу.
При работе с несколькими блоками стоит избегать избыточного использования фиксированных фонов, так как они увеличивают нагрузку на GPU и могут снижать плавность прокрутки.
Как зафиксировать фон только в пределах контейнера
Чтобы фон оставался неподвижным не для всей страницы, а только внутри выбранного блока, применяют сочетание свойств background-attachment и background-clip вместе с ограничением области прокрутки контейнера.
Пример базовой структуры:
.container {
width: 800px;
height: 400px;
overflow: auto;
background-image: url('background.jpg');
background-attachment: local;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
Значение background-attachment: local; фиксирует фон относительно содержимого контейнера. При прокрутке внутри блока фон движется вместе с содержимым, но не зависит от прокрутки страницы. Если требуется, чтобы фон оставался на месте при скролле контейнера, используется background-attachment: fixed; совместно с псевдоэлементом.
Пример с псевдоэлементом:
.container {
position: relative;
width: 800px;
height: 400px;
overflow: auto;
z-index: 1;
}
.container::before {
content: "";
position: absolute;
inset: 0;
background: url('background.jpg') center/cover no-repeat fixed;
z-index: -1;
}
Такой подход изолирует фон внутри блока, не влияя на другие элементы. При необходимости можно добавить полупрозрачность через background-color с rgba или слой с градиентом.
- Используйте
position: relative;для контейнера, чтобы ограничить действие псевдоэлемента. - Контролируйте порядок отображения через
z-index. - Для плавности при анимации или параллаксе применяйте
transform: translateZ(0);– это задействует аппаратное ускорение.
Поддержка фиксированного фона в мобильных браузерах

Свойство background-attachment: fixed; работает нестабильно на мобильных устройствах. Многие браузеры ограничивают его использование для сохранения производительности при прокрутке. На iOS и Android зафиксированный фон часто игнорируется или преобразуется в поведение scroll.
На iOS Safari фиксированный фон полностью отключён при стандартной прокрутке страницы. Обходное решение – использовать псевдоэлемент с абсолютным позиционированием и фоном, который остаётся неподвижным относительно окна просмотра. Для Android Chrome фиксированный фон поддерживается частично: корректно работает при отсутствии масштабирования и при отсутствии вложенных контейнеров с прокруткой.
| Браузер | Поддержка | Особенности |
|---|---|---|
| Safari (iOS) | Нет | Фон прокручивается вместе со страницей |
| Chrome (Android) | Частично | Работает без зума и при фиксированной высоте документа |
| Firefox (Android) | Частично | Иногда требует background-position: center для корректного отображения |
| Samsung Internet | Да | Работает корректно при html, body {height: 100%;} |
Для надёжного эффекта можно использовать фиксированный блок под контентом:
body::before {
content: "";
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('bg.jpg') center / cover no-repeat;
z-index: -1;
}
Этот способ не зависит от поддержки background-attachment: fixed; и одинаково работает на всех платформах.
Как использовать псевдоэлементы для создания фиксированного фона
Псевдоэлементы ::before и ::after позволяют создавать слой с фоном, который остается неподвижным при прокрутке страницы. Для этого достаточно добавить псевдоэлемент к body или любому контейнеру с position: relative и задать ему абсолютное позиционирование.
Пример CSS для фиксации фона через ::before:
body::before {
content: "";
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('фон.jpg');
background-size: cover;
background-repeat: no-repeat;
z-index: -1;
}
Обязательные параметры: position: fixed для неподвижного размещения и z-index ниже основного контента, чтобы фон не перекрывал элементы страницы. background-size: cover гарантирует, что изображение растянется по всей области экрана.
Если необходимо применять разные изображения для разных секций, создайте отдельные контейнеры с position: relative и используйте псевдоэлементы внутри них. Это позволяет фиксировать фон только в пределах выбранного блока, не влияя на остальные элементы.
Дополнительно можно комбинировать несколько псевдоэлементов для наложения градиентов, текстур или полупрозрачных слоев поверх основного изображения, не изменяя HTML-разметку.
Такой подход уменьшает количество дополнительных тегов и сохраняет структуру документа чистой, одновременно обеспечивая контроль над расположением и поведением фоновых изображений при прокрутке.
Комбинирование фиксированного фона с параллакс-эффектом

Параллакс-эффект создаётся за счёт разной скорости движения слоёв при прокрутке. Для реализации с фиксированным фоном используйте свойство background-attachment: fixed;. Оно закрепляет изображение относительно окна просмотра, позволяя контенту перемещаться поверх фона.
Ключевой момент – настройка размера и позиционирования изображения: background-size: cover; обеспечивает полное покрытие области, а background-position: center; сохраняет центр изображения видимым при изменении размеров окна.
Для плавного параллакса на мобильных устройствах рекомендуется использовать медиа-запросы, отключающие фиксированное позиционирование: @media (max-width: 768px) { background-attachment: scroll; }. Это предотвращает проблемы с производительностью и отображением на сенсорных экранах.
Дополнительно можно комбинировать несколько слоёв через linear-gradient или rgba(), чтобы создать глубину и визуальное разделение элементов. Например, полупрозрачный слой сверху фиксированного изображения улучшает читаемость текста.
Для оптимизации загрузки используйте изображения формата WebP с разрешением, соответствующим максимально ожидаемому размеру экрана. Это снижает нагрузку на браузер и предотвращает рывки при прокрутке.
Контейнер с контентом поверх фиксированного фона должен иметь достаточные внутренние отступы (padding) и минимальную высоту, чтобы параллакс был заметен при скролле. Рекомендуется тестировать на разных разрешениях и браузерах для сохранения стабильности эффекта.
Типичные ошибки при использовании фиксированного фона и способы их исправления

Фиксированный фон может создавать неожиданные визуальные эффекты, если использовать его без учета особенностей верстки. Ниже приведены распространенные ошибки и методы их устранения.
-
Фон выходит за пределы видимой области при масштабировании: часто происходит при использовании фиксированного изображения с малым разрешением. Решение: применяйте фон с высоким разрешением и свойство
background-size: cover;, чтобы изображение адаптировалось под размеры окна. -
Неправильное наложение текста на фон: текст может стать нечитаемым на фиксированном фоне с высокой детализацией. Решение: добавляйте полупрозрачный слой с
background-color: rgba(...)или используйтеtext-shadowдля улучшения читаемости. -
Проблемы с производительностью на мобильных устройствах: свойство
background-attachment: fixed;не всегда корректно работает в мобильных браузерах и может замедлять прокрутку. Решение: для мобильных устройств заменяйте фиксированный фон на статический с помощью медиазапросов:@media (max-width: 768px) { body { background-attachment: scroll; } } -
Дублирование фона при прокрутке: при использовании фиксированного фона на элементах с высотой меньше контента может появляться повторяющийся узор. Решение: добавляйте
background-repeat: no-repeat;и проверяйте размеры блока черезmin-heightилиheight: 100vh;. -
Неправильное позиционирование при масштабировании окна: фон может смещаться относительно контента. Решение: используйте
background-position: center center;иbackground-size: cover;для сохранения центрального объекта фона при изменении размеров окна.
Соблюдение этих рекомендаций позволит фиксированному фону выглядеть стабильно и избежать распространенных проблем на разных устройствах и разрешениях экрана.
Вопрос-ответ:
Как зафиксировать фон сайта так, чтобы он не двигался при прокрутке страницы?
Чтобы фон оставался на месте при скролле, используется свойство CSS background-attachment со значением fixed. Например: body { background-image: url('фон.jpg'); background-attachment: fixed; }. Это заставляет фон оставаться неподвижным, даже когда контент страницы прокручивается.
Можно ли зафиксировать только часть фона, например верхнюю его часть?
Да, можно комбинировать свойства background-position и background-attachment: fixed. Например, background-position: top center; указывает браузеру, что фиксированный фон должен быть выровнен по центру сверху. В итоге при прокрутке верхняя часть изображения останется на месте, а остальной контент будет двигаться.
Как зафиксированный фон влияет на производительность сайта?
Фиксированный фон может немного увеличивать нагрузку на рендеринг страниц, особенно на мобильных устройствах или при использовании больших изображений. Это происходит из-за того, что браузеру нужно пересчитывать позицию контента относительно неподвижного фона при прокрутке. Чтобы снизить нагрузку, рекомендуется использовать оптимизированные изображения и по возможности включать свойство background-size: cover; для подгонки фона под экран.
Можно ли зафиксировать фон для отдельного блока, а не для всей страницы?
Да, свойство background-attachment: fixed применимо к любому блоку, но поведение может различаться в зависимости от браузера. Иногда для блоков с ограниченной высотой фиксированный фон ведет себя не так, как ожидается. Альтернатива — использовать псевдоэлемент ::before с абсолютным позиционированием, чтобы имитировать фиксированный фон только для нужного блока.
Какие комбинации CSS лучше всего подходят для фонового изображения, чтобы оно красиво смотрелось при фиксации?
Чаще всего используют комбинацию background-image, background-size: cover;, background-position: center; и background-attachment: fixed;. Это позволяет изображению полностью покрывать блок, оставаться по центру и не смещаться при прокрутке. Дополнительно можно настроить background-repeat: no-repeat;, чтобы фон не дублировался, если размер изображения меньше экрана.
Почему фон сайта двигается вместе с содержимым, и как сделать его неподвижным?
Если фон прокручивается вместе с текстом или блоками на странице, значит для него не задано свойство, отвечающее за закрепление. Чтобы фон оставался на месте, нужно использовать CSS-свойство background-attachment со значением fixed. Например, для всего документа это можно сделать так: body { background-image: url('fon.jpg'); background-attachment: fixed; background-size: cover; }. В этом случае изображение фона будет всегда оставаться на одном месте, а содержимое страницы будет прокручиваться поверх него. Свойство background-size: cover; помогает фоновой картинке покрывать весь экран без растягивания и искажения пропорций.
