30
F03 – Stilmallar Föreläsning 3, HT2013 Stilmallar Kurser: Webbteknisk introduktion 1IK415 Johan Leitet

F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

F03 – Stilmallar Föreläsning 3, HT2013 Stilmallar

Kurser: Webbteknisk introduktion 1IK415 Johan Leitet

Page 2: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

F03 – Stilmallar Dagens agenda

•  CSS, Stilmallar •  Lokala, interna, externa •  Mediatyper •  Selektorer

- Taggselektorer - Klasselektorer - ID-selektorer

•  Egenskapsarv •  Pseudo-klasser och –element •  Kombinatorer •  Specificitet •  Ramverk •  Preprocessors

Page 3: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Stilmallar

Page 4: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Stilmallar på vår sida

o  Lokala stilar (inline styles) o  Inbäddade stilmallar (embedded styles) o  Externa stilmallar (external styles)

•  Webbläsarens inbyggda stilmall •  Användarspecifika ändringar •  Våra, utvecklarens, stilmallar:

Dessa kan vi påverka

Page 5: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Länka in CSS-regler

<p style="color:#6C9; text-align:center"> Centrerad, blåaktig text </p>

<head> …

<style type="text/css"> p { color: red; } </style> … </head>

<head> <title>Sida med stilmallar</title>

<link rel="stylesheet" type="text/css" href="basic.css" /> … </head>

Lokala stilmallar Inline styles

Inbäddade stilmallar Embedded styles

Externa stilmallar External styles

Page 6: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Media

Page 7: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Mediatyper <body> <head> <link rel="stylesheet" media="print" href="print.css" /> <title>Våra produkter</title> </head> …

Stilmallen "print.css" kommer bara att laddas då dokumentet skrivs ut. Vi har bland andra tillgång till: all, handheld, print, projection, speech, tv, screen

default

Page 8: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Syntax selektor { egenskap: värde; } selektor { egenskap: värde; egenskap: värde; egenskap: värde; }

h1 { color: #CDF; background-color: #9FF; }

Testrubrik

Skrivs antingen mellan <style></style> eller i en inlänkad css-fil

Exempel:

"regel"

“Hämta alla h1-element och ändra färgen till #CDF och bakgrundsfärgen till #9FF”

Page 9: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Selektorer

selektor { egenskap: värde; } selektor { egenskap: värde; egenskap: värde; egenskap: värde; }

taggselektorer klassvis

via ID

Page 10: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Taggselektor h1 { egenskap: värde; }

h1 em { egenskap: värde; }

<p> Detta är ett <em><strong>exempel</strong></em>. Ytterligare <strong>text</strong>… </p>

p em strong { egenskap: värde; }

Page 11: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Klasselektor

.avatar { egenskap: värde; }

<p class="avatar">…</p> … <p class="avatar">…</p> … <div class="avatar">…</div> … <p class="avatar">…</p>

p.avatar { egenskap: värde; }

<p class="avatar">…</p> … <p class="avatar">…</p> … <div class="avatar">…</div> … <p class="avatar">…</p>

.

Page 12: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Klasselektor

.avatar { egenskap: värde; } .active { egenskap: värde; }

<p class="avatar">…</p> … <p class="avatar active">…</p> … <div class="avatar active">…</div> … <p class="avatar">…</p>

.

Page 13: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

ID-selektor

#content { egenskap: värde; }

<div id="content"> … </div> … <div id="footer">…</div>

#

På en och samma sida får det aldrig förekomma att två id-attribut har samma värde!

Page 14: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Egenskapsarv (property inheritance) Vissa egenskaper, satta på en förälder ärvs ned till dess barnnoder.

p { color: red; }

<p> Detta är ett <em><strong>exempel</strong></em> på <em>egenskapsarv</em>. </p>

Detta är ett exempel på egenskapsarv.

Alla egenskaper ärvs dock inte ned.

Page 15: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Referens för HTML och CSS

h"ps://developer.mozilla.org/  

Page 16: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Pseudoklasser

a:link { egenskap: värde; } a:visited { egenskap: värde; } a:focus { egenskap: värde; } a:hover { egenskap: värde; } a:active { egenskap: värde; }

orörd

besökt

fokus

muspekare över länken

aktiv, precis klickad

div p:first-child { egenskap: värde; }

Alla p-taggar som är förstabarn och har en förfader i form av div

<div> <p>Jag är första barn.</p> <ul> <li><p>Jag också!</p></li> </ul> <p>Inte jag :(</p> </div> <p>Inte jag heller :(</p>

Page 17: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Pseudoelement p:first-letter { font-size: 2em; }

Första bokstaven är större <p>Första bokstaven är större</p>

p:first-line { font-weight: bold; } Första textraden som webbläsaren rendrerar blir fetmarkerad

<p>Första textraden som webbläsaren rendrerar blir fetmarkerad</p>

Första textraden som webbläsaren rendrerar blir fetmarkerad I CSS2 finns även :before och :after

som kan användas för att dynamiskt lägga in innehåll före eller efter ett element.

Page 18: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Kombinatorer

li + li { color: red; } <ul> <li>Ett</li> <li>Två</li> <li>Tre</li> </ul>

•  Ett •  Två •  Tre

"Direkt syskon-väljare" (A+B)

<p> Detta är ett <em><strong>exempel</strong></em>. Ytterligare <strong>text</strong>… </p>

p em strong { egenskap: värde; }

Ättling (A B)

<p> Detta är ett <em><strong>exempel</strong></em>. Ytterligare <strong>text</strong>… </p>

p > strong { egenskap: värde; }

Barn (A>B)

Page 19: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Gruppering av selektorer Önskas liknande egenskaper på flera element så grupperar man dessa:

h1,h2,h3 { font-family: verdana, san-serif; color: #6CF; } h2 { text-decoration: underline; }

Rubriknivå 1 Rubriknivå 2 Rubriknivå 3

Grupperingen sker genom att

separera med ,

p.red strong.hidden, #content p:first-line { font-family: verdana, san-serif; color: #6CF; }

Det går bra att både gruppera och

kombinera selektorerna

Page 20: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Läsbar CSS Personliga stilar för att skriva CSS: #content p { font-size: 1.1em; color: #4D83A4; margin-left: 10px; }

#content { float: left; font-size: 1.6em; } #content p { color: #4D83A4; font-size: 1.1em; } #content p:first-letter { font-size: 1.7em; }

#content { font-size : 1.6em; float : left; margin-right: left; }

Page 21: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Kommentarer

/* Layout Using: Two columns floating layout Total width: 250px */ #content { margin-right: 250px; width: 600px; float: left; } /* Main Menu */ ol li { float: left; }

Kommentarerna

känns igen från t.ex.

C#, PHP etc.

// stöds inte!

Page 22: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Specificity Olika selektorer har olika "vikt". Ju högre vikt,

desto högre prioritet.

h"p://coding.smashingmagazine.com/2007/07/27/css-­‐specificity-­‐things-­‐you-­‐should-­‐know/  

p#firstptagg { color: yellow; } p.content { color: green; } p { color: red; } p { color: blue; }

id-elektorer (vikt 100) har högst prioritet följt av klasselektorer (vikt 10) och lägst prioritet har övriga selektorer (vikt 1)

101 11

1 1+senast angiven

Rekommenderad läsning

Page 23: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Ordningen spelar roll <head> …

<link rel="stylesheet" href="basic.css" /> <style> h3 { text-align: right; font-size: 20px; } p { color: blue; } </style> </head> <body> <h3 style="font-size: 10px">Rubrik</h3> <p class="intro">Lite text…</p> </body>

h3 { color: red; text-align: left; font-size: 8px; } p.intro { color: silver; }

Rubrik Lite text...

Rubrik Lite text...

10px

h3 { color: red; text-align: right; font-size: 10px; } p.intro { color: silver; }

Effektiv stilmall: basic.css

Vad händer om man byter plats på <style> och <link>?

Page 24: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Vad? Typsnitt/Text Storlekar, avstånd, typsnitt

Grafik Färger, ramar, skuggor, effekter, bakgrundsbilder/sprites

Layout Boxar, positionering, layoutmodeller

Animationer Transformationer, transitioner

Page 25: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

CSS1 -> CSS2 -> CSS3

h"p://www.w3.org/Style/CSS/current-­‐work  

•  Selektorer •  Multi-column layout •  Media Queries •  Color •  Text •  Fonts •  Grid Layout •  …

Page 26: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

CSS3 h"p://www.paulrhayes.com/experiments/cube-­‐3d/  

h"p://beta.theexpressiveweb.com  

h"p://caniuse.com/  

Page 27: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Webbläsarspecifika prefix

#someid { -webkit-transition: opacity 13s; -moz-transition: opacity 13s; -o-transition: opacity 13s; -ms-transition: opacity 13s; transition: opacity 13s; }

Page 28: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Reset CSS * {margin:0; padding:0}

Att använda * är inget man rekommenderar då det tar hårt på webbläsaren att gå igenom samtliga element på webbsidan och nollställa dess marginaler och padding. Bättre är då att specificera exakt vilka element som ska nollställas. Enklast är att använda något av alla de nollställningsstilmallar som finns att hitta på nätet.

CSS  Global  Styles  Re

set  av  Kyle  Neath  

CSS  Global  Reset  av  Chris.an  Montoya  

CSS  Reset  Rel

oaded  av  Eric  

Meyer  

Page 29: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Ramverk

•  Ökad produktivitet •  Du undviker vanliga misstag •  Du arbetar in en standard för namngivning •  Förenklar samarbete •  Du slipper tänka på webbläsarkompabilitet •  Du får ren och välstrukturerad kod

Fördelar •  Tar tid att lära sig •  Riskerar att ärva fel och buggar •  Du mister genuin kunskap om CSS •  Källkod som innehåller mycket onödig kod •  Du riskerar att fastna i gamla hjulspår

Nackdelar

Källa:  h6p://www.smashingmagazine.com/2007/09/21/css-­‐frameworks-­‐css-­‐reset-­‐design-­‐from-­‐scratch/  

Page 30: F03 – Stilmallarorion.lnu.se/pub/education/course/1IK415/ht13/lecture/F03/F03 - CSS… · Reset CSS * {margin:0; padding:0} Att använda * är inget man rekommenderar då det tar

Preprocessors

lesscss.org

sass-­‐lang.com  

learnboost.github.io/stylus/  

•  Variabler •  Nästling •  Mixins •  Arv •  Operatorer •  ….

h6p://net.tutsplus.com/tutorials/html-­‐css-­‐techniques/sass-­‐vs-­‐less-­‐vs-­‐stylus-­‐a-­‐preprocessor-­‐shootout/