Dlaždicové rozložení pomocí flexboxů v CSS
Pojďme se nyní naučit vytvářet dlaždicové rozložení pomocí flexboxů. Nejprve uspořádejme flexboxy do několika řad, po třech blocích v řadě.
K tomu nastavme rodiči flexboxů šířku
na 300px a flex-wrap na hodnotu
wrap, a potomkům šířku na 100px:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
<div class="child">9</div>
</div>
.parent {
display: flex;
flex-wrap: wrap;
width: 300px;
border: 1px solid red;
}
.child {
box-sizing: border-box;
width: 100px;
height: 100px;
border: 1px solid green;
}
:
Nyní přidejme mezeru mezi našimi bloky vodorovně. K tomu zvětšeme šířku rodiče, abychom vytvořili dodatečný prostor pro odsazení.
Protože máme tři bloky v řadě, znamená to,
že mezi nimi jsou dvě mezery. Řekněme, že
chceme, aby každá mezera měla šířku
10px. Vyplývá z toho, že šířku rodiče
je třeba zvětšit o 20px, tedy nastavit
ne 300px, ale 320px.
Nyní nastavme rodiči bloků justify-content
na hodnotu space-between a dosáhneme
požadované mezery mezi bloky:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
<div class="child">9</div>
</div>
.parent {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
width: 320px;
border: 1px solid red;
}
.child {
box-sizing: border-box;
width: 100px;
height: 100px;
border: 1px solid green;
}
:
Nyní přidejme stejnou mezeru
mezi bloky i svisle. K tomu lze
nastavit vlastnost align-content na hodnotu
space-between.
K tomu je však třeba nastavit rodiči výšku,
jinak align-content nebude fungovat.
Nastavme výšku na 320px.
V tomto případě se nám vejdou právě tři
řady bloků o výšce 100px plus
dvě mezery mezi řadami o 10px.
Spusťme:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
<div class="child">9</div>
</div>
.parent {
display: flex;
flex-direction: row;
justify-content: space-between;
align-content: space-between;
flex-wrap: wrap;
width: 320px;
height: 320px;
border: 1px solid red;
}
.child {
box-sizing: border-box;
width: 100px;
height: 100px;
border: 1px solid green;
}
:
Vše funguje skvěle, ale existují některé problémy, které rozebereme v následující lekci.