22 Jan, 2011
17:11

CSS-Tutorial II ”Komma igång”

Tutorials

Oavsett om du sitter med en klar templet-design från något bloggvertyg eller vill skapa en webbplats helt från start är det en god idé att känna till grunderna i stilmallen och veta i vilken ände man ska börja.

Hur du startar?

En sida kan vara uppbyggd på flera sätt, min imaginära webbplats som jag ska använda som exempel är uppbyggd med ett sidhuvud (head), en sidopanel (sidebar), en innehållsdel (content) och sist en sidfot (footer). Jag och min sambo har debatterat kring vilken ordning man ska skriva de olika reglerna i stilmallen och egentligen spelar det ingen roll. Oftast blir det lite olika.

Först tänkte jag visa hur min imaginära webbplats ser ut på dess index-sida (index.html):

  1. <html>
  2. <head>
  3. <title>Titel på sidan </title>
  4. <link rel=”stylesheet” href=”http://www.dinsida.se/style.css” type=”text/css” media=”screen” />
  5. </head>
  6. <body>
  7. <div id=”wrapper”>
  8. <div id=”header”>
  9. Allt inom headern
  10. </div>
  11. <div id=”side”>
  12. Allt inom sidopanelen
  13. </div>
  14. <div id=”content”>
  15. Allt inom innehållssidan
  16. </div>
  17. <div id=”footer”>
  18. Allt i sidfoten
  19. </div>
  20. </div>
  21. </body>
  22. </html>

Detta skrev jag upp för att visa lite i vilken ordning det kan vara bra att tänka. html kommer först och sedan kommer body som omsluter hela fönstret. Allt som ska visas i fönstret omsluts av body-taggen. Wrapper omsluter själva sidan. Resten är div-id:erna för respektive del (header, sidebar, content, footer).

Det är bra att ha en sådant här struktur när du startar så du vet med vilken div-id du ska starta.

Arv och hierarki

För er som studerat biologi på gymnasiet eller helt enkelt inte är helt tappade bakom flötet vet att barn ärver attribut (utseende) från sina föräldrar. Precis så fungerar det även inom css. Stammfadern av allt som ska synas i webbläsaren är body-taggen. Alla taggar har arv från body-taggen. Sedan kommer diverse taggar i ordning efter det. Det kommer garanterat spara dig lite tandgnissel om du lär dig lite kring arv och hierarki.

Här är en bild jag har gjort för att illustrera hierarki inom css och lite hur taggarna ärvs från varandra

Det finns vissa modifikationer med denna bild, en sida behöver inte starta med en div-tagg men eftersom min imaginära sida ska starta med en wrapper så tänkte jag ta med den ändå. Sedan kommer p, img, ul ol och h1. img-taggen är ett inline-element så den ärvs från p, dock tog jag den för sig själv eftersom img-taggen inte nödvändigtvis behöver omslutas av ett p och i de fall p ej omsluter img ärver inte img.

Det finns vissa saker som alltid ärvs och andra saker som aldrig eller sällan ärvs. Saker som alltid ärvs är font och font-color. Saker som aldrig ärvs är margin, padding och floats. Men kan säga att det som hör till text-attribut ärvs medan det som hör till positionering i block-element aldrig ärvs.

OBS. Det är viktigt att hålla reda på arv när du stilar med relativa element som em och procent. Har du specificerat div-content med 80% textstorlek och sedan specifierat p med 80% så kommer den egentliga storleken på p vara 80% av contents 80%. Alltså 64%, detta är något som kan ställa till väldiga irritationer om man glömmer bort hierarkin.

Kaskaden

Detta är antagligen lite överkurs men jag tänkte skriva lite kort om vad kaskaden är. Kortfattat är kaskaden varifrån stilarna kommer ifrån. Mer kortfattat än så går det nog inte att få det.

Du kanske har tänkt på att saker som b, p, a (vanligtvis stilad skitfullt) och listor är förstilade. Denna stilen finns vanligtvis redan i webbläsarens standardformatmall. Det är den som är absolut överst i den ordning som webbläsaren väljer att hämta formateringen. Detta är specifikt störigt för alla som sitter med I.E. Så här ser ordningen ut:

  • Webbläsarens standardformatmall
  • Användarformatmall
  • Författarstilmall
  • Inbäddade stilar skapade av författaren
  • Inline stilar skapade av författaren

Användarformatmall används vanligtvis av de som har nedsatt synfunktion och/eller färgblindhet. Det flesta av oss ställer inte in något specifikt i användarformatmallen så jag tänkte hoppa den helt. Sedan efter har vi det som är lite mer intressant för de som vill arbeta med hemsidor, nämligen stilmallen. Grundprincipen är alltså att om vi har taggen p som är specificerad med arial i stilmallen men en inbäddad stil har p specificerat med verdana kommer p att visas som verdana. Är dock inget specificerat i varken den inbäddade stilen, stilmallen, användarformatmallen kommer p att visa Times eftesom det är standard för alla webbläsare. Vi kan ta ett konkret exempel med p-taggen.

  1. Webbläsarens standardformatmall
  2. p: color: black
  3. Användarformatmall
  4. p ej specificerat
  5. Förtfattarstilmall
  6. p: red
  7. Inbäddade stilar skapade av författaren
  8. p ej specificerat
  9. Inline stilar skapade av författaren
  10. p: blue

Texten kommer i detta fall vara röd förutom på de inline-element där texten blir blå. Det finns även en hel del andra regler kring kaskaden som jag inte riktigt har lust att förklara just nu, vi tar det vid ett senare tillfälle när vi kommit mer in på klass-attribut osv. Men tanken bakom detta är först och främst få er att uppmärksamma formateringen webbläsare går efter och förklara lite kortfattat varför viss formatering kan se latjo ut beroende på vilken webbläsare ni använder. Detta är specifikt synligt när det kommer till margin och padding har jag själv märkt.

Man man kan använda ”resetters” om man vill knäppa webbläsare på näsan och designa lite mer fritt. Det finns en hel del olika resetters som funkar mer eller mindre bra. Den jag använder ser ut som följande:

  1. body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,
  2. h5,h6,pre,form,fieldset,input,p,th,td {
  3. margin: 0;
  4. padding: 0;
  5. }

Jag tycker att den funkar ganska bra och ni her helt fria att den den om ni själva vill ha en resetter.

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }

Denna funkar även men jag skulle vara lite försiktig med den, denna tar nämligen bort allt, verkligen allt. Den kan bli lite onödig markup bara för att specificera b/strong som fetstil.

Onödig markup

Hur vacker var inte den övergången? Jag är nästan lite stolt över mig själv. Min svensklärare skulle säkerligen vara stolt över den övergången. Men nu ska jag skriva om onödig markup som så många kanske inte funderat kring. Det finns två bra anledningar till att effektivisera sin markup först och främst är det mycket lättare att hitta i en stilmall som har ordning och reda, för det andra så tar mindre information i stilmallen mindre plats. Låt oss beskriva det hela med ett exempel:

Du äger en butik som har ett förråd, i ditt förråd har du din inventarier. Du betalar naturligtvis hyra för detta förråd (för er som inte hänger med så drar jag en allegori mellan förråd och webbhotell/server). Du kan antingen slänga in alla dina lådor huller om buller vilket kommer resultera i att färre lådor får plats än om du hade organiserat lådorna och staplat dem, samt att du kommer få svårt att hitta bland alla dina lådor.

Det kan vara svårt att i början veta vad som är onödigt och inte, därför tänkte jag inte gå in närmare på det nu. Sedan kan tilläggas att det går att ta det här med onödig markup lite för extremt. När du börjar kompromissa på din vision för att spara markup har du helt och hållet missat poängen med att designa.

22 Aug, 2009
23:25

CSS-Tutorial I ”Grunderna”

Tutorials

Innehållsförteckning:
Varför en stilmall?
CSS-regler
Olika egenskaper
– color
– font

I min förra tutorial gjorde jag misstaget att börja med att beskriva hur man designa citat utan att ha förklarat grunderna i css. Detta gjorde att en stor del av mina läsare inte förstod hur man skulle göra. Detta misstag skall jag inte göra igen utan nu börjar vi med grunderna i css.

Varför en stilmall?

Poängen med css och för den delen validering är att skilja på struktur och presentation. I ditt html dokument skall enbart strukturer specificeras och i din stilmall skall enbart presentationen visas. Taggar såsom <font color=”red”> i ditt html dokument är alltså inte okej utan färgen på din font skall alltid specificeras i din stilmall. Du skiljer strukturen från presentationen dels för att få mindre markcup i ett dokument, för att kunna validera sidan och säkerställa att sidan följer rådande webbstandard men också för att själv slippa ändra om alla presentations-taggar när du vill byta design.

CSS-regler

En stilmall är uppbyggd med regler (eller syntax på engelska), varje specifikation av en tagg kallas regel och ser ut som följande:

Här ser ni då min vackert ritade regel för p-taggen. P är en tagg som finns mellan stycken i all text man skriver så det var därför jag valde att ta just den taggen, alla använder den och de som inte gör det borde börja omedelbart. Namnet på taggen, klassen, id:n osv kallas selektor och inte ”tagg”, taggen är det man skriver i html-dokumentet tex: <p> Detta är en text</p>.

Allt som specificerar selektoren är deklarationer, dvs. allt som förklarar hur just den taggen skall se ut. Deklarationer i sig uppbyggd med egenskaper och värden. En regel behöver inte bara vara uppbyggd med flera deklarationer utan också flera selektorer:

  1. h1, h3, h4, h5 {
  2. color: #444;
  3. font-family: Verdana, Arial, Sans-serif;
  4. text-transform: uppercase;
  5. }

h1, h2, h3, h4 och h5 är selektorerna och alla specificeras nu genom deklarationerna. Sedan kan man skriva enstaka regler för var och en för att specificera storleken, margin eller andra saker som man vill att varje selektor ska skilja sig i.

Olika egenskaper

När du ska börja ditt skapande kan du slås av att du inte har någon aning om vad man faktiskt kan göra. Vet man inte om vilka egenskaper det finns att använda till sin regel så blir man väldigt begränsad i sitt kreativa skapande.

Color

Egenskapen color specificerar färgen på texten. Här kan du använda dig av hexadecimal som kan se ut som #000 eller #f9f9f9, en hexadecimal består av sex siffror eller bokstäver (värde) som kan översättas till #RRGGBB alltså #RedRedGreenGreenBlueBlue. Antingen kan man skriva ut hela hexadecimala-värdet med sex värden eller med tre värden om hexadecimala-värdet är enhetlig såsom #fff (vit) eller #222 (mörkgrå). Exempel:

  1. p {
  2. color: #990000;
  3. }

Mer om det hexadecimala-färgsystemet kan du läsa på W3schools.

Texten skriven i p skulle nu bli röd, du kan skriva red också och generera samma färg men det är ganska begränsande att använda red, black, blue och green som färgval då du inte kan fritt välja nyans själv.

Font

Fonter och textformatering ska egentligen bli ett inlägg för sig men jag tänkte förklara font lite kortfattat här ändå.

Egenskapen font är ett samlingsnamn som specificerar texten. Det kan se ur ungefär såhär i stilmallen

  1. p {
  2. font: bold 12px Verdana, Arial, Sans-serif;
  3. }

Värdet bold gör precis som det låter, texten fetstil. Här kan du välja italic för kursiv eller inget för normal stil. Värdet 12px specificerar storleken på texten. Du kan också välja mellan procent eller em och detta skall jag förklara lite närmare i inlägget om just textformatering.

Verdana, Arial,Sans-Serif betyder helt enkelt att webbläsaren i förstahand skall använda sig av verdana som typsnitt och om inte verdana finns skall den använda sig av Arial. Verdana och Arial är visserligen webbsäkra fonter (de flesta operativsystem har dem) men om det motförmodan råkar vara så att dessa fonter inte finns är det bra att välja Sans-serif eftersom då väljer webbläsaren det första bästa Sans-serif fonten som finns (Verdana och Arial är båda Sans-seriffer). Detta gör jag för att jag verkligen inte vill ha serif i min brödtext, har du själv Times new roman exempelvis så rekommenderar jag dig att byta, nej men seriöst välj serif då på slutet av din font familj.

Subsidiaritet i EU

Eftersom hela arbete ”Maktbalans i EU – subsidiaritet och suveränitet i Lissabonfördraget” skulle vara alldeles för stor att publicera här så får ni istället läsa slutsatsen som är tillräckligt kort för att folk ska orka läsa. Läs mer

Tribute to typography

Äntligen är den nya designen här, väntar man på något gott väntar man aldrig för länge. Min tanke men denna design var att försöka få fram min förkärlek till typografi utan att göra designen för rörig och ansträngande att titta på. Läs mer

Integration vs invandrare

Det bygger inte på förnuft eller rationalitet. Utan det bygger på en fördom djupt förankrad i människors allmänna sinnesbild. En fördom som bygger på okunskap. Okunskap som hot för demokratin. Detta är allvar. Läs mer

Skrivsätt & Skrivrätt

Språkriktighet behövs för att förstå en text men behövs alla regler? Vilka skrivregler har någon egentlig betydelse för läsbarheten och vilka regler följer vi enbart för att det är rätt? Varför väcker språkriktighetsfrågor sådant debatt? Läs mer