Header med logo och navbar
Vi skall fixa till en trevlig header till vår webbsida. Här är tanken att man skall se sidans logotyp och titel samt en möjlighet att navigera mellan webbplatsens olika delar. Vi behöver tänka igenom vilken struktur som html-elementen skall ha och hur de skall stylas.
Det kan se ut så här när vi är klara.

Struktur på html-elementen
Till att börja med så justerar vi innehållet i det som vi vill skall vara vår header. Den ser nu ut så här.
<header class="siteheader"> <header> <a href="me.html"> <img src="img/leaf.png" alt="Logotyp"> <span>Kursen webtec</span> </a> </header>
<nav> <ul> <li><a href="me.html">Me</a></li> <li><a href="report.html">Redovisa</a></li> <li><a href="about.html">Om</a></li> </ul> </nav> </header>
Strukturen är viktig då den bestämmer vilka möjligheter jag har för att styla. Men ibland måste jag veta hur man kan styla, innan jag väljer den slutliga strukturen för html-elementen. Vi behöver egentligen tänka på båda sakerna samtidigt.
Innan vi lägger till någon style så ser webbsidan ut så här.

Grunden till en stylesheet
När man bygger en stylesheet så kan man ibland börja med en “reset” eller “normalisering”. Det gör man för att ställa in “rätt” standardinställningar och skriva över webbläsarens egna inställningar.
Det finns ramverk man kan använda för det här, till exempel “Normalizer”, men i detta fallet så gör vi en enklare normalisering med vår egen kod.
/* Basic normalization */* { box-sizing: border-box;}
Förklaring om box-sizing
.
box-sizing
är en CSS-egenskap som styr hur webbläsaren beräknar storleken på ett element. När du sätter box-sizing: border-box
, inkluderar webbläsaren padding och border i elementets totala bredd och höjd. Detta gör det enklare att hantera layout, eftersom du inte behöver manuellt räkna in dessa värden när du specificerar storleken på ett element.
Det vanliga värdet för box-sizing
är content-box
. I det läget är definierar bredd och höjd endast innehållet i elementet. Padding och border läggs till ovanpå den specificerade bredden och höjden.
Placera ovan kod i filen css/normalize.css
och importera den i din stylesheet css/style.css
med följande konstruktion.
@import url("normalize.css");
Importera en stylesheet
Ibland är det bra att organisera sin kod så man får en bra struktur. I stylesheeten kan vi göra det med hjälp av @import url();
. Vi kan alltså importera en annan style in till vår style. Det gör det enklare att ha ordning och reda.
Innan du går vidare så skapar du filen css/header.css
och sedan lägger du till en import i din stylesheet för att importera den.
Din stylesheet css/style.css
ser nu ut så här.
@import url("normalize.css");@import url("header.css");
Ordningen i hur man importerar och skriver sina regler spelar roll. De översta reglerna är minst signifikanta och de kan skrivas över eller justeras av de regler som skrivs längre ned i din stylesheet.
Navbar, nollställ stilen för ul
Det första vi gör för att styla headern är att fixa till navbaren. Här har vi valt att strukturera elementen som en ul/li-lista och det är relativt vanligt i sammanhanget.
<header class="siteheader"> <nav> <ul> <li><a href="me.html">Me</a></li> <li><a href="report.html">Redovisa</a></li> <li><a href="about.html">Om</a></li> </ul> </nav> </header>
Det första vi gör i stylen är att nollställa stilen för elementet ul, det är för att vi vill ha navbaren liggande. Placera koden i header.css
.
.siteheader nav ul { display: flex; /* Arrange navigation links in a horizontal row */ gap: 1rem; /* Add spacing between individual navigation links */ list-style: none; /* Remove default bullet points from the list */ margin: 0; /* Remove default margin around the list */ padding: 0; /* Remove default padding around the list */}
När vi lägger till stylen så öppnar vi webbläsaren för att se hur stilen påverkar webbsidan.


Navbar styla länkarna
Vi fortsätter med att styla länkarna i navbaren. Här har vi en style för hur länkarna ser ut som standard och hur länkarna ser ut när man håller muspekaren över länken, man “hovrar” över länken.
/* Styling for navigation links */.siteheader nav a { text-decoration: none; /* Remove the default underline from links */ color: #006400; /* Set a dark green color for the navigation links */ font-size: 1rem; /* Define the font size for the links */ font-weight: bold; /* Make the text bold for better readability */ transition: color 0.3s, border-bottom 0.3s; /* Add a smooth transition for color and border changes on hover */}
/* Hover effect for navigation links */.siteheader nav a:hover { color: #2e8b57; /* Change the text color to forest green when hovered */ text-decoration: underline; /* Add an underline to the link when hovered */}
NU har navbaren fått färg och länkarna i navbaren ändrar sig när man håller musen över dem.

Logo och titel för webbplatsen
När man klickar på webbsidans logo, eller på dess titel, så brukar det leda till webbsidans start. Låt oss nu styla den delen.
De html-element som ingår är dessa.
<header class="siteheader"> <header> <a href="me.html"> <img src="img/leaf.png" alt="Logotyp"> <span>Kursen webtec</span> </a> </header> </header>
Vi börjar med att styla logon och titeln så att de har en lika höjd.
/* Styling for the logo image */.siteheader img { width: 40px; /* Set the width of the logo */ height: 40px; /* Set the height of the logo, ensuring it is square */}
/* Styling for the text next to the logo */.siteheader span { font-size: 1.5rem; /* Define the font size for the header text */ font-weight: bold; /* Make the header text bold for emphasis */ color: #2e8b57; /* Apply a forest green color to the header text */ font-family: 'Arial', sans-serif; /* Use Arial font, fallback to sans-serif */}
Uppdatera stilen i din stylesheet och se hur den påverkar webbsidans element.
Nu vill vi avsluta med att placera logon och titeln på en rad så att man får en visuell känsla att de hänger ihop.
/* Styling for the logo and heading link */.siteheader a { display: flex; /* Arrange the logo and text in a horizontal row */ align-items: center; /* Align the logo and text vertically at the center */ gap: 0.5rem; /* Add spacing between the logo image and the text */ text-decoration: none; /* Remove the default underline from the link */ color: inherit; /* Inherit the color from the parent element for consistency */}
När all kod är på plats i din stylesheet så kan det se ut så här.

Färglägg header och placera på en rad
Avslutningsvis så lägger vi en flexbox på de två grupperna av element som ligger i headern så att de kan placeras på samma rad och vi kan lägga en bakgrundsfärg.
/* General styling for the header */.siteheader { display: flex; /* Use flexbox to arrange child elements horizontally */ justify-content: space-between; /* Place items at both ends of the header */ align-items: center; /* Vertically align items to the center */ padding: 1rem 2rem; /* Add spacing inside the header (1rem top/bottom, 2rem left/right) */ background-color: #eaf5ea; /* Set a light green background color */ border-bottom: 2px solid #2e8b57; /* Add a forest green border at the bottom */ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Apply a subtle shadow for a slight 3D effect */}
Det vi gör är att använda display: flex
som hjälper oss att organisera sidans olika element. I detta fallet placeras de på en rad som ges en bakgrundsfärg för att framhäva headern.
När all kod är på plats i din stylesheet så kan det se ut så här.

En komplett stylesheet
Här kan du se den kompletta stylesheeten header.css
för att styla sidans header. Studera den gärna i detalj för att lära dig vilka css-regler som används.
En komplett stylesheet
/* Navigation menu styling */.siteheader nav ul { display: flex; /* Arrange navigation links in a horizontal row */ gap: 1rem; /* Add spacing between individual navigation links */ list-style: none; /* Remove default bullet points from the list */ margin: 0; /* Remove default margin around the list */ padding: 0; /* Remove default padding around the list */}
/* Styling for navigation links */.siteheader nav a { text-decoration: none; /* Remove the default underline from links */ color: #006400; /* Set a dark green color for the navigation links */ font-size: 1rem; /* Define the font size for the links */ font-weight: bold; /* Make the text bold for better readability */ transition: color 0.3s, border-bottom 0.3s; /* Add a smooth transition for color and border changes on hover */}
/* Hover effect for navigation links */.siteheader nav a:hover { color: #2e8b57; /* Change the text color to forest green when hovered */ border-bottom: 2px solid #2e8b57; /* Add a forest green underline to the link when hovered */}
/* Styling for the logo image */.siteheader header img { width: 40px; /* Set the width of the logo */ height: 40px; /* Set the height of the logo, ensuring it is square */}
/* Styling for the text next to the logo */.siteheader header span { font-size: 1.5rem; /* Define the font size for the header text */ font-weight: bold; /* Make the header text bold for emphasis */ color: #2e8b57; /* Apply a forest green color to the header text */ font-family: 'Arial', sans-serif; /* Use Arial font, fallback to sans-serif */}
/* Styling for the logo and heading link */.siteheader header a { display: flex; /* Arrange the logo and text in a horizontal row */ align-items: center; /* Align the logo and text vertically at the center */ gap: 0.5rem; /* Add spacing between the logo image and the text */ text-decoration: none; /* Remove the default underline from the link */ color: inherit; /* Inherit the color from the parent element for consistency */}
/* General styling for the header */.siteheader { display: flex; /* Use flexbox to arrange child elements horizontally */ justify-content: space-between; /* Place items at both ends of the header */ align-items: center; /* Vertically align items to the center */ padding: 1rem 2rem; /* Add spacing inside the header (1rem top/bottom, 2rem left/right) */ background-color: #eaf5ea; /* Set a light green background color */ border-bottom: 2px solid #2e8b57; /* Add a forest green border at the bottom */ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Apply a subtle shadow for a slight 3D effect */}
Så här ser det ut när man använder sig av den kompletta stylen.
