Как сделать так, чтобы с уменьшением страницы было пропорциональное уменьшение блоков (то есть высота и ширина уменьшались), используя только css

Интересует конкретно секция info-section, в других блоках можно не соблюдать данное правило:

* {
  margin: 0 auto;
  padding: 0;
  box-sizing: border-box;

}

.wrapper {
  width: 1200px;
  background-color: #c0dbd9;
  /* height: 1000px; */

}

header {
  background-color: #7faff7 ;
  /* width: 1170px; */
  height: 100px;
  margin: 0 15px;
}

.header-button {
  margin-top: 27px;
  margin-left: 30px;
  background-color: #A5C7F9;
  border: 1px solid #000000;
  border-radius: 5px;
  padding: 8px 15px;
}

.header-button-text {
  color: #fff;
  font-family: 'Roboto', sans-serif;
  font-size: 20px;
}

.main-section {
  background-color:#b3f95a;
  display: flex;
  position: relative;
  width: 1170px;
  height: 411px;
  /* margin-top: 15px;
  margin-bottom: 15px; */
  margin: 15px;
}

.blocks {
  background-color: #8AD191;
  position: absolute;

}


.main-block-1 {
  width: 390px;
  height: 198px;
  top: 0;
  left: 0;
}

.main-block-2 {
width: 590px;
height: 198px;
left: 405px;
top: 0px;
}
.main-block-3 {
  width: 160px;
  height: 198px;
  left: 1010px;
  top: 0px;
}
.main-block-4 {
  width: 995px;
  height: 198px;
  left: 0px;
  top: 213px;
}
.main-block-5 {
  width: 160px;
  height: 198px;
  left: 1010px;
  top: 213px;
}

.info-section {
  background-color: #88B5BF;
  /* display: flex;
  position: relative; */
  /* align-items: center; */
  display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
padding: 30px;
gap: 30px;
max-width: 100%;
  /* width: 1170px; */
margin: 0 15px;
  height: 259px;
  margin-bottom: 100px;
}

.info-section > div {
  background-color: #0D89B0;
  /* position: absolute; */
  /* max-width: 100%; */
  /* width: 255px; */
  /* height: 199px; */
  /* --w: 255px; */
  /* width: var(--w); */
  aspect-ratio: 4 / 3;
  /* object-fit: contain; */
}
.footer {
  width: 1170px;
  height: 100px;
  background-color: #7FAFF7;
}
    <div class="wrapper">
      <header>
        <button class="header-button"><p class="header-button-text">Open pop-up
            button</p></button>
      </header>
      <main class="main-section">
        <div class="main-block-1 blocks"></div>
        <div class="main-block-2 blocks"></div>
        <div class="main-block-3 blocks"></div>
        <div class="main-block-4 blocks"></div>
        <div class="main-block-5 blocks"></div>
      </main>
      <div class="info-section">
        <div class="info-block-1"></div>
        <div class="info-block-2"></div>
        <div class="info-block-3"></div>
        <div class="info-block-4"></div>
      </div>
      <footer>
        <div class="footer"></div>
      </footer>
    </div>


Ответы (1 шт):

Автор решения: Ростислав

Если вам нужно, чтобы блок всегда выглядел одинаково, используйте относительные единицы измерения:

* {
  margin: 0 auto;
  padding: 0;
  box-sizing: border-box;
}

.wrapper {
  width: 100%;
  background-color: #c0dbd9;
}

header {
  background-color: #7faff7;
  height: 16vh;
  margin: 0 2vw;
}

.header-button {
  margin-top: 2vh;
  margin-left: 3vw;
  background-color: #a5c7f9;
  border: 0.2vw solid #000000;
  border-radius: 1vw;
  padding: 0.6vh 0.8vw;
}

.header-button-text {
  color: #fff;
  font-family: "Roboto", sans-serif;
  font-size: 4vh;
}

.main-section {
  background-color: #b3f95a;
  position: relative;
  margin: 2vh 2vw 2vh 2vw;
  display: flex;
  flex-wrap: wrap;
  padding: 0px 0.4% 0.4% 0px;
}

.blocks {
  background-color: #8ad191;
  margin: 0.4% 0px 0px 0.4%;
}

.main-block-1 {
  width: 30%;
  height: 20vh;
}

.main-block-2 {
  width: 59.6%;
  height: 20vh;
}

.main-block-3 {
  width: 9.2%;
  height: 20vh;
}

.main-block-4 {
  width: 90%;
  height: 20vh;
}

.main-block-5 {
  width: 9.2%;
  height: 20vh;
}

.info-section {
  background-color: #88b5bf;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  padding: 1.4vh;
  gap: 1.5vw;
  max-width: 100%;
  margin: 0 2vw;
  height: 28vh;
  margin-bottom: 2vh;
}

.info-section div {
  background-color: #0d89b0;
  width: 22vw;
  height: 25vh;
  aspect-ratio: 4 / 3;
}

.footer {
  height: 7.2vh;
  margin: 0 2vw;
  background-color: #7faff7;
}

На практике подобный код использовать, конечно, не стоит. Чтобы сайт был удобным, блоки должны изменять размер и расположение в зависимости от экрана.

Подробнее о единицах измерения здесь.

→ Ссылка