Mer layout: z-index, display och visibility
Boxar som hamnar mer eller mindre på samma ställe kan komma att täcka över varandra, du
kan till och med skapa osynliga boxar som täcker synliga. Normalt sker detta enligt den vanliga
ordningen i HTML, efterkommande täcker över förfäder, men du kan också styra detta med egenskapen
z-index
.
z-index
ges ett värde som är en godtycklig siffra. En box med ett z-index
som har en högre siffra hamnar ovanpå en med en lägre siffra.
Egenskapen display
talar om hur ett visst element skall visas i boxmodellen.
display: block
- Elementet visas på block-nivå, dvs utbrutet ut flödet, som en separat låda
display: inline
- Elementet visas inline, utan att bryta flödet, ingen egen låda
display: inline-block
- Elementet visas som en låda, men lämnar inte det omgivande flödet
display: list-item
- Elementet visas som en del i en lista
display: none
- Elementet visas inte. Detta innebär inte bara att det är osynligt, utan att det försvinner ur flödet. Det påverkar alltså inte hur sidan visas. Detta är till exempel praktiskt när man vill göra mobilversioner av sajter där inte allt från den "stora" sajten behöver finnas med.
Det finns nu för tiden många fler möjliga värden till display
än vad som listas ovan, men dessa kanske är de vanligaste, som man har mest nytta av.
Du kan hitta mer om alla olika värden till display
här (den officiella specifikationen), här (css-tricks.com) eller här (w3schools.com).
Utöver display
finns också CSS-egenskapen visibility
för att kontrollera hur element visas.
Det mest intressanta värdet till visibility
är hidden
. visibility: hidden;
kommer att göra elementet osynligt, det kommer inte visas. Till skillnad från display: none;
kommer ett element med egenskapen visibility: hidden;
fortfarande påverka hur resten av sidan visas. Det syns inte, men det finns där…
Exempel här!
Semantiska strukturelement i HTML5
Innehållet på en webbsida följer i allmänhet en viss struktur, det finns ett sidhuvud högst upp, en sidfot längst ned på sidan, en separat navigationsmeny, olika artiklar, kanske olika faktarutor, och så vidare.
Traditionellt har utvecklare löst det genom att använda <div>
-element med olika klassnamn för de olika delarna av en sida, <div class="header">
, <div class="footer">
, <div class="nav">
med flera, vilket fungerat bra (och fortfarande fungerar alldeles utmärkt). I och med HTML5 infördes dock ett antal semantiska element för organisation av innehållet på en sida, dessa funkar i princip som div
ar, men gör det tydligt även för maskiner vad som är vad på en sida. Det går bra att använda flera av samma slag på en sida.
Elementen är inte obligatoriska, men kan bidra till att en sidas blir mer begriplig.
Vanliga semantiska strukturelement i HTML (HTML5)
Element |
Förklaring |
<header> |
Ett sidhuvud eller ett artikelhuvud |
<footer> |
En sidfot, det som står längst ned på sidan |
<main> |
Sidans huvudinnehåll |
<nav> |
Ett block med navigation av något slag, oftast en meny |
<article> |
En artikel på sidan |
<section> |
Ett särskilt avsnitt i en artikel eller på en sida. Det finns exempel på både användning av <section> inuti <article> och <article> inuti <section> . Bra till exempel för kapitelindelning. |
<aside> |
Innehåll som är åtskilt från annat på sidan, t.ex. en faktaruta eller liknande |
Det här är några av de vanligaste semantiska strukturelementen i HTML, men det finns fler. Du kan läsa mer på W3Schools, eller hos WHATWG
Övning 1 i layout med CSS
- Skapa en mapp (katalog) med namnet
ovningar
(inga ö i fil eller katalognamn!)
- Skapa i denna en mapp som heter
ovning_1
- Skapa i
ovning_1
ett nytt HTML-dokument, med namnet index.html
. Dokumentet ska innehålla en <h1>
-rubrik, Tre stycken med vanlig text (<p>
) och minst en länk.
- Skapa en extern stilmall med namnet
ovning_1.css
och länka till denna från index.html
Dokumentet ska vara utformat efter följande
- Överst ska det vara en ruta som motsvarar bannern som brukar ligga överst på webbsidor.
- Nedanför denna ska det finnas ett block för huvudinnehållet på sidan
- Till vänster om huvudinnehållet ska det finnas en mindre ruta som motsvarar vänstermenyn som ofta förekommer på webbsajter
- Nedanför huvudinnehållet ska det finnas en ruta som motsvarar sidfoten
- Huvudinnehållet och vänstermenyn tillsammans får inte vara bredare än 950 pixlar
- Alla delar ovan ska ha någon bakgrundsfärg
- Alla delar ovan ska ha någon typ av kantlinje
- Mellan alla delar ska det vara ett avstånd på 20 pixlar
- Du behöver inte fylla delarna med något textinnehåll om du inte har lust eller hinner
- Du kan behöva innesluta vissa
<div>
-ar i andra <div>
-ar för att underlätta arbetet, men det beror på hur du väljer att lösa uppgiften
Dokumentet ska vara korrekt. Det ska innehålla korrekt DTD, teckenuppsättning och ha en <title>
.
Du får använda webben som resurs och surfa efter lösningar. Huvuddelen av det du behöver kunna finns dock här på sajten.