Как сделать так, чтобы с уменьшением страницы было пропорциональное уменьшение блоков (то есть высота и ширина уменьшались), используя только 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;
}
На практике подобный код использовать, конечно, не стоит. Чтобы сайт был удобным, блоки должны изменять размер и расположение в зависимости от экрана.
Подробнее о единицах измерения здесь.