Я пытаюсь создать адаптивное меню с плитками.
- В зависимости от содержимого может содержать до 8 плиток .
- Это изменит форму в определенных точках останова. На 8 плитках он начинается с 4x2 на маленьких экранах, изменяется на 1x8 на средних и заканчивается на 2x4 на больших.
- Каждая плитка должна иметь ширину 150px и высоту 105px с небольшим желобом между ними (в этом примере 2px). На экранах, где такие размеры больше не помещаются, они должны уменьшаться пропорционально , сохраняя структуру макета ( 4x2 ).
Приведенный ниже пример успешно работает в меню, и его плитки начинают уменьшаться (по ширине), когда область просмотра становится слишком узкой, но не удается пропорционально уменьшить плитки. Я попытался поиграться с ширина , максимальная ширина , высота , максимальная высота на всех слоях, высота: авто; свойство. Ничего не сработало.
Я основал меню на свойстве wax flexbox , потому что оно позволяет мне изменять компоновку сетки в точках останова, не ставя под угрозу структуру HTML, и я хочу избежать использования сетки CSS из-за недостаточной поддержки браузера.
Важное замечание: Разверните отсканированный до полного экрана, чтобы увидеть эффект сжатия.
*,
*::before,
*::after {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.tile-group {
background-color: antiquewhite;
display: flex;
flex-wrap: wrap;
width: 100%;
max-width: 608px;
}
.tile-padding {
width: 152px;
height: 107px;
padding: 1px;
max-width: 25%;
}
.tile {
background-color: antiquewhite;
width: 100%;
height: 100%;
}
.tile-color-1 {
background-color: red;
}
.tile-color-2 {
background-color: blue;
}
.tile-color-3 {
background-color: green;
}
.tile-color-4 {
background-color: yellow;
}
.tile-color-5 {
background-color: indianred;
}
.tile-color-6 {
background-color: skyblue;
}
.tile-color-7 {
background-color: darkseagreen;
}
.tile-color-8 {
background-color: greenyellow;
}
<div class="tile-group">
<div class="tile-padding">
<div class="tile tile-color-1"></div>
</div>
<div class="tile-padding">
<div class="tile tile-color-2"></div>
</div>
<div class="tile-padding">
<div class="tile tile-color-3"></div>
</div>
<div class="tile-padding">
<div class="tile tile-color-4"></div>
</div>
<div class="tile-padding">
<div class="tile tile-color-5"></div>
</div>
<div class="tile-padding">
<div class="tile tile-color-6"></div>
</div>
<div class="tile-padding">
<div class="tile tile-color-7"></div>
</div>
<div class="tile-padding">
<div class="tile tile-color-8"></div>
</div>
</div>