#html #css
#HTML #css
Вопрос:
У меня простой вопрос. Возможно ли создать этот макет только с помощью Flexbox без добавления divs в мой HTML-код?
Мне удалось получить этот макет, сократив мою структуру HTML с помощью некоторых разделов (две части для правой и левой стороны и т. Д.), Но я застрял, когда попытался сделать это без добавления этих разделов.
Вот структура HTML, в которой я хотел бы разобраться!
*{
padding:0;
margin:0;
box-sizing:border-box;
}
main {
height:100vh;
display:flex;
justify-content:center;
align-items:center;
}
section{
background-color:blue;
height:800px;
width:800px;
}
<main>
<section>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
<div class="box5"></div>
<div class="box6"></div>
<div class="box7"></div>
<div class="box8"></div>
<div class="box9"></div>
</section>
</main>
Комментарии:
1. Только с помощью flexbox без добавления каких-либо div это невозможно. Это может быть достигнуто с помощью сеток
2. @karthick. Спасибо за ваш ответ. Поэтому я перестаю пытаться сделать это таким образом ^^
3. Есть решение с использованием дополнительных div, которые вам могут не понравиться. Но для справки jsfiddle.net/sano6891/7z1r2054
Ответ №1:
Если вы хотите вместо этого взглянуть на css grid, вы можете попробовать что-то вроде этого: https://jsfiddle.net/6yturLg1 /
По сути, вы определяете сетку, затем размещаете элементы внутри сетки там, где хотите.
html, body {
height: 100%;
width: 100%;
margin: 0px;
padding:0px;
}
section {
display: grid;
grid-template-columns: 25% 25% 25% 25%;
grid-template-rows: 25% 25% 25% 25%;
width: 100%;
height: 100%;
}
section div.box1 {
background-color: #f00;
grid-column-start: 1;
grid-column-end: span 2;
grid-row-start: 1;
grid-row-end: span 2;
}
section div.box2 {
background-color: #f90;
grid-column-start: 1;
grid-column-end: span 1;
grid-row-start: 3;
grid-row-end: span 1;
}
/* ... etc ... */
Комментарии:
1. Спасибо, но я стараюсь делать это с помощью flex. И это не квадрат, который делится на 4 части по 25%.
2. @WesK Вы можете настроить столбцы так, как вы хотите с точки зрения размера, я выбрал 4×25%, потому что это было проще и передало идею создания дополнительных подразделений. Вы всегда можете создать 8 или 12 строк вместо 4, если вам нужны дополнительные подразделения.
3. @WesK итак, элементы в вашем макете имеют динамическую высоту? тогда вам следует рассмотреть макет кладки — это невозможно с помощью flexbox