Kafli 13: Að skrifa CSS

Eins og með HTML skiptir máli að huga að því hvernig við formum og skrifum CSS.

Algeng leiðin til að skrifa CSS er að hafa einn selector per línu með { á línu seinasta selectors. Allar yfirlýsingar eru síðan dregnar inn innan reglusetts.

/* ekki svona */
.text, .list, div { font-size: 1em;
color: black; }
/* heldur svona */
.text,
.list,
div {
  font-size: 1em;
  color: black;
}

Almennt ættum við ekki að nota ID selectora þar sem þeir hafa hærra specifity en class selector og geta því valdið vanda. Einnig ætti id aðeins að vera skilgreint einu sinni fyrir element per síðu og því ekki hægt að endurnýta fyrir fleiri. Þetta þýðir þó ekki að við notum id aldrei, þegar við vissulega viljum finna einstök element með JavaScript getum við notað id.

#main .list { font-size: 2em; }
/*
  getum ekki náð hærra specificity nema með því að nota líka id
  eða fara út í að nota !important
*/
.list { font-size: 1.5em; }

Einnig er æskilegt að nýta sér „flóðið“ þar sem það á við, t.d. til að skilgreina leturgerð aðeins einu sinni, þarf ekki að skilgreina aftur og aftur fyrir mörg element.

Stundum eru yfirlýsingum raðað á einhvern sérstakan hátt og þeim hópað saman, t.d. allt sem á við texta saman, allt sem á við staðsetningu. Þetta á sérstaklega við í verkefnum sem margir vinna í.

Þegar við skrifum class á element til að velja með selector þá er venjan að skrifa þá með kebab-case á ensku:

/* ekki svona */
.MikilvaegurTexti
.ListOfItems
/* heldur svona */
.important-text
.list-of-items

Kebab-case er ein af nokkrum leiðum til að skrifa samsett orð án bila en sú þörf kemur oft upp í forritun þegar bil hefur merkingu. Í CSS er bil leið til að sameina selectors svo velja þarf einhverja leið til að útbúa samsett orð. Aðrar leiðir eru t.d.

Eins og með annað sem viðkemur kóðastíl er mikilvægt að gæta samræmis og velja sér „nafnahefð“ (e. naming convention) sem getur fylgt hefðum forritunarmáls, forritarahóps eða fyrirtækis.

13.1 CSS validation

W3C heldur úti validation þjónustu sem bæði bendir okkur á beinar villur en einnig hugsanlega vandræði sem CSS gæti skapað. Til þess að fá allar upplýsingar þurfum við að kveikja á öllum warnings undir more options.

Fyrir eftirfarandi CSS:

p {
  font-size: 1en;
  margim: 1em;
}
.list {
  background-color: #999;
}

fáum við villur:

2 p Value Error : font-size Unknown dimension 1en
3 p Property margim doesn't exist : 1em

og viðvaranir:

7 You have no color set (or color is set to transparent) but you have set
  a background-color. Make sure that cascading of colors keeps the text
  reasonably legible.

Sem bendir okkur á að þar sem við setjum bakgrunnslit en ekki lit, þá gætum við lent í því að flóðið gefi okkur ólæsilegan texta, eða texta sem ekki hefur nægilega mikið contrast.

13.2 Reset

Hver „user agent“ (í flestum tilfellum vafri) setur sín eigin sjálfgefnu gildi sem eru notuð ef við skilgreinum ekkert. Þetta getur verið mismunandi milli vafra og því varð hugtakið um css reset til, en það eru reglusett sem setur öll element í „núllstöðu“. Fyrsta reset.css skjalið var búið til af Eric Meyer.