Display flex

📕📕 6 minuters läsning

Introduktion

Flexbox är ett layout-system som används med CSS för att styra layouten på en webbplats. I ett element med display: flex kan element placeras i valfri ordning.

Elementens ordning kan styras och elementen kan placeras i rader eller kolumner.

Tänk på

  • Syntax, display: flex
  • Flex är ofta lösningen™

Instruktioner

Skapa två dokument, flex.html och flex.css. HTML filen ska innehålla den grundläggande HTML strukturen med en länk till .css filen

Skapa ett <main> element i dokumentets <body>. Skapa sedan följande struktur för en navigation:

<nav>
<ul>
<li>
<a href="#">Hem</a>
</li>
<li>
<a href="#">Om</a>
</li>
<li>
<a href="#">Kontakt</a>
</li>
</ul>
</nav>

Strukturen består av en lista i ett <nav> element, detta är vanligt förekommande på webbsidor. Flex kan nu användas på listan för att placera navigationen på en rad.

Testa även egenskapen flex-direction och sätt dess värde till row eller column.

nav > ul {
display: flex;
gap: 1rem;
list-style: none;
}

Viktigt är att flex sätts på <ul> elementet och inte <nav> då nav enbart innehåller ett element, <ul>.

Men om vi exempelvis behöver en logo eller en rubrik för sidan så kan flex användas på <nav> elementet.

<nav>
<h1>Sidans titel</h1>
<!-- Listan -->
</nav>

För att centrera innehållet vertikalt kan align-items användas. För att kontrollera den horisontella placeringen kan justify-content användas.

Men den riktning som styrs av dessa genskaper ändras om flex-direction ändras. Testa även det.

nav {
display: flex;
align-items: center;
justify-content: space-between;
}

Testa olika varianter av flex egenskaperna. Du hittar mer på MDN.

Prova att ladda in tidigare dokument och använd .container klassen tillsammans med en navigation.

Uppgifter

Grundläggande uppgifter

Uppgift 1

Vad händer när ett element har display flex till skillnad från block?

Uppgift 2

Hur fungerar flex-direction? Hur påverkar det align-items och justify-content?

Tips

Tänk på att gruppera dina element i containers. För att förstå och kunna skapa bra layouter med kontroll i HTML och CSS så behöver du kunna arbeta med detta.
Gruppera liknande innehåll för att styra dess position.

Följande exempel visar hur du kan styra innehållet med flex, placera följande element i en flex-container och studera skillnaden:

<h1>Exempelrubrik</h1>
<p>Detta är en paragraf med text</p>

<div>
<h1>Exempelrubrik</h1>
<p>Detta är en paragraf med text</p>
</div>

Ett ytterligare exempel med en bild som skapar en layout med två kolumner.

<div class="flex">
<img src="https://picsum.photos/200/300" alt="placerholder image" />
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>