Lektioner

Listor och menyer

List of Native American names with English translations (Massachusetts historical society)

I HTML finns det tre olika typer av listor: punktlistor (oordnade listor), numrerade listor (ordnade listor) och definitionslistor.

Listor används vanligtvis för att lista information. Ett vanligt användningsområde är att göra menyer till webbsajter. Det överväldigande flertalet av olika menyer du stöter på på webben är faktiskt helt vanliga oordnade listor med länkar i, även om punkterna är borttagna och listan kanske är lagd på tvären med hjälp av CSS.

En stor fördel med att använda listor för att skapa menyer är att det ger goda möjligheter att följa den designprincip som brukar kallas graceful degradation, eller den närbesläktade principen progressive enhancement, som jag tänkte förklara lite närmare.

Graceful degradation

Graceful degradation är en designprincip, alltså ett sätt att förhålla sig till sitt projekt, som innebär att det du gör ska fungera bra även om mer avancerade funktioner faller bort.

Om du väljer att göra dina menyer som enkla listor med länkar, kommer de behålla sin funktionalitet och vara begripliga även om CSS eller javascript som använts i utformningen inte fungerar.

Principen innebär alltså att du alltid ska tänka på att den grundläggande funktionen ska finnas kvar, även när högre funktioner faller bort.

Progressive enhancement

Progressive enhancement är en princip som ligger nära idén om graceful degradation, men man tänker liksom åt andra hållet.

I stället för att utgå ifrån hur sajten ska vara när all avancerad funktionalitet är på plats utgår designern från att den från början ska vara bra i sitt enklaste skick och lägger sedan till mer avancerad funktionalitet. I praktiken kommer en sajt som är designad efter principen om progressive enhancement också följa principen om graceful degradation.

Tips för att göra snygga menyer av listor

Det finns många olika exempel och tutorials på webben för snygga menyer, baserade på listor, om du ser någonting du gillar kan du också i webbläsaren kolla källkoden och se om du kan låna idéer.

Ett mycket bra ställe för menybyggen är annars Listamatic, där du kan hitta massor av exempel med tydliga instruktioner av olika svårighetsgrad.

De olika listtyperna

Oordnad lista

En oordnad lista är en vanlig punktlista, och skapas med elementet <ul>. Detta är en förkortning av unordered list.

Inuti <ul>, alltså mellan <ul> och </ul> placerar du dina listpunkter, det som ska vara i listan, med elementet <li>, list item. Koden till en oordnad lista med tre punkter skulle alltså kunna se ut så här:

<ul>
   <li>Item</li>
   <li>Item</li>
   <li>Item</li>
</ul>
och ge resultatet:
  • Item
  • Item
  • Item

I varje <li> kan du lägga in text, andra taggar, bilder eller vad som helst. Vanligt är att listan består av länkar. Listor är helt enkelt ett bra sätt att ställa upp och organisera innehåll.

En (oordnad) lista med länkar till tre populära webbtjänster skulle kunna se ut som följer.

<ul>
   <li><a href="http://facebook.com">Facebook</a></li>
   <li><a href="http://twitter.com">Twitter</a></li>
   <li><a href="http://google.se">Google</a></li>
</ul>
Och ge resultatet:

Listans utseende, till exempel vilken sorts punkter som ska användas eller om den ska visas på "fel" ledd, kan sedan ändras med CSS…

Ordnad lista

En ordnad lista är i HTML det samma som en numrerad lista. Som standard används vanliga arabiska siffror (1, 2, 3), men det kan ändras i efterhand, precis som man kan ändra utseendet på oordnade listor.

Den ordnade listan definieras med elementet <ol>, ordered list. I övrigt gör du precis som med oordnade listor.

<ol>
   <li>Item</li>
   <li>Item</li>
   <li>Item</li>
</ol>
ger:
  1. Item
  2. Item
  3. Item

Bortsett från att en ordnad lista är just ordnad/numrerad fungerar allt likadant som med oordnade/punktlistor.

Definitionslista Beskrivningslista

En definitionslista beskrivningslista (description list) skiljer sig från de två tidigare sorterna genom att den innehåller två olika nivåer, en term och en definition.

En definitionslista är en speciell typ av lista, med två nivåer, En term som ska definieras beskrivas och en definition beskrivning av denna term.

Själva listan definieras med elementet <dl>, definition description list (namnbyte i HTML 5). I denna finns det två typer av listelement, termen <dt> och definitionen beskrivningen <dd>. Termen är här det som ska definieras beskrivas och definitionen beskrivningen av termen.

En definitionslista beskrivningslista med tre termer och tre definitioner beskrivningar skulle kunna skrivas så här:

<dl>
   <dt>Term</dt>
   <dd>Beskrivning</dd>
   <dt>Term</dt>
   <dd>Beskrivning</dd>
   <dt>Term</dt>
   <dd>Beskrivning</dd>
</dl>
och visas som:
Term
Beskrivning
Term
Beskrivning
Term
Beskrivning

Namnbyte i HTML 5

Eftersom man menar att begreppet definition list har varit svårt för folk att förstå, har man bytt ut namnet på den här typen av lista i HTML 5. <dl> ska inte längre stå för definition list utan för description list, beskrivningslista. Detta innebär inte mycket ren praktiskt, men kanske är det lättare att förstå begreppen term och beskrivning än term och definition.

Utöver detta kan du göra samma saker med <dt> och <dd> som med <li> i de andra listtyperna.

CSS för att modifiera listor

Naturligtvis finns det massor av CSS-egenskaper som kan användas för att stylea listor, men de här brukar vara extra användbara när man ska bygga menyer av listor.

Egenskap Vad den påverkar
list-style-type Listsymbolen (punkten eller siffran)
list-style-position Listsymbolens position i förhållande till texten
list-style-image använd en bild som listsymbol
display <li> har normalt värdet block, värdet inline får dem att visas på en linje i stället för ovanpå varandra
margin avståndet mellan objekt
padding avståndet mellan ett objekts innehåll och dess (ofta osynliga) kant

Uppgift: Använd listor i HTML och gör en meny

Nu börjar arbetet med att få en ordnad och strukturerad sajt att arbeta i. Vi börjar med att testa de olika typerna av listor och göra en meny till din förstasida (landing page)

Pröva de olika listorna

  1. Gör en ny mapp på servern
  2. Döp den mappen till listor_1
  3. Skapa i den nya mappen ett nytt html-dokument som heter index.html
  4. Skapa i den nya mappen ett nytt css-dokument som heter stilmall.css
  5. Ge det nya HTML-dokumentet en <title> som är ordet "listor"
  6. Ge det nya HTML-dokumentet en huvudrubrik (<h1>) som också är "listor"
  7. Skapa en punktlista (<ul>)
  8. Skapa en numrerad lista (<ol>)
  9. Skapa en beskrivningslista (<dl>)
  10. Ge sidan en ljus bakgrundsfärg med CSS
  11. Ge sidan egenskapen font-family: Arial, Helvetica, sans-serif i CSS
  12. Ge <ul>, <ol> och <dl> en 2 pixlar tjock kantlinje och vit bakgrund (CSS)

Uppdatera din startsida (landing page) med en meny

  1. Gör på din startsida en <ul> som ska vara din huvudmeny
  2. Lägg i menyn till länkar till uppgifterna listor_1 och css_uppgift_1

På fredag ska vi titta lite mer om hur du kan utforma din meny med CSS.

Alla CSS-egenskaper du kan styra som inte finns i materialet på webbem.se kan du hitta i listan här.