Как правильно сверстать блок c фоновым изображением?

Рейтинг: 0Ответов: 1Опубликовано: 05.07.2023

Есть блок с фоновой картинкой со следующими свойствами:

.overlay {
    width: 100%;
    height: calc(100% - 440px);
    background: url("../img/overlay_desktop.png") center top no-repeat;
    background-size: cover;
    position: absolute;
    top: 440px;
    left: 0;
    z-index: 1;
}

введите сюда описание изображения

Проблема в том, что при изменении ширины экрана размер фонового изображения меняется, и визуально блок поднимается/опускается. Видеопример - https://recordit.co/epzPPIhlje

Можно через медиазапросы задать, например, в шаг 100px свои значения height и top. Но в таком случае будет очень много медиазапросов (например, если начинать от 3840 и до 767, то получится 30 медиазапросов).

Как сделать так, чтобы при изменении ширины экрана сам блок визуально оставался примерно на одном месте? Есть какое-то решение этой проблемы? Возможно можно как-то через calc() сделать? Не могу сообразить.

Ответы

▲ 0

<!DOCTYPE html>
<html lang="ru">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>fon</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
    <style type="text/css">
      body {
        background: lightblue;
      }
      .overlay {
        width: 100%;
        height: 440px;
        border: 1px solid black;
        position: absolute;
        top: 440px;
        left: 0;
        background: url(https://catherineasquithgallery.com/uploads/posts/2021-12/1639706140_22-catherineasquithgallery-com-p-fon-tsveti-rozovie-53.jpg) center no-repeat;
        background-size: cover;
        z-index: 1;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="overlay"></div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
  </body>
</html>