Ваш подход в основном обоснован в использовании:
background-size: cover;
, чтобы гарантировать, что браузер изменяет размер изображения, чтобы охватить все <body>
.
Чего вам не хватает, хотя,является то, что высота тела не охватывает всю высоту области просмотра.
Чтобы исправить это, вы можете добавить:
body {min-height: 100vh;}
т.е.. высота тела не должна быть меньше 100% высоты области просмотра (или 100 высота области просмотра единиц).
Рабочий пример:
body, .top, .bottom {
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
body {
min-height: 100vh;
background-color: rgb(204, 204, 204);
background-image: url('https://images.pexels.com/photos/414171/pexels-photo-414171.jpeg');
}
.top, .bottom{
position: fixed;
width: 100%;
height: 45px;
background-color: rgb(0, 0, 0);
}
.top{
top: 0;
left: 0;
}
.bottom{
bottom: 0;
right: 0;
}
<div class="top"></div>
<div class="bottom"></div>