CSS

**CSS** (af *Cascading Style Sheets*; oft hreinlega kallað **stílsnið**) er mál sem notað er til að skilgreina útlit skjala, oftast vefsíðna. CSS segir vafranum hvar kassar eigi að vera og hvernig texti eigi að líta út, sá texti er settur fram í HTML. 

## Munur á gömlu HTML og XHTML/HTML og CSS
Í eldri útgáfum HTML var hægt að skilgreina rauðan texta svona:

```html
<p color="red">Rauður Texti</p>
```


Í útgáfu 4.01 t.d. og öllum útgáfum XHTML þykir eðlilegra að skilgreina útlit textans í sérstakri CSS-skrá með eftirfarandi hætti:

```css
p { color: red; }
```


Og stiklutextinn sjálfur lítur einfaldlega svona út:

```html
<p>Rauður Texti</p>
```


Til að tengja skjölin tvö saman þarf að vísa í CSS skjalið innan `<head>` hluta (X)HTML skjalsins.

```html
<link rel="stylesheet" type="text/css" media="screen,projection" href="screen.css" />
```


Einnig er hægt að hafa stílreglurnar í `<head>` hluta HTML skjals, innan í `<style>` marki.

```html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Halló heimur! – CSS</title>
<style>
p {
color: black;
}
</style>
</head>
<body>
<p>Halló heimur!</p>
<p>Þessi texti mun vera svartur.</p>
</body>
</html>
```


## Uppbygging
Grunnmálfræði CSS samanstendur af veljara** (e. selector) **og stíl** (e. declaration). **Veljarinn kemur á undann síðan** kemur **slaufusvigi** („<code>{</code>“), því **næst stíllinnn – sem aftur er skipt í eigindi** (e.  **og gildi** (e. ), **aðskilin með tvípunkti** („<code>:</code>“) – **og loks öfugur slaufusvigi** („<code>}</code>“). **Þessi skrifmáti er** nokkurn veginn nákvæmlega **eins og** skrifmáti **JSON**. **Veljarinn er venjulega nafnið á markinu** sem það á við eða **kommu** („<code>, </code>“) **skiptur listi yfir þau. Hægt er að hafa umsagnir** (e.  **í CSS** kóðanum **innan í „`/*`“ og „`*/`“**-pari. Bilið milli tvípunktsins eftir eigindið í stílnum og gildisins er ekki nauðsynlegt og valfrjálst.
<syntaxhighlight lang="css">
h1 {
color: red;
}
h2, h3, h4, h5, h6 {
color:gray;
/* athugið að bilið milli „color:“ og „gray“ (litað blátt) hefur verið tekið burt */
}
</syntaxhighlight>
=== Veljarar ===
Þótt veljarar séu oft bara listi yfir mörk þarf stundum að sigta sum úr, eða jafnvel láta stílinn gilda fyrir allt skjalið – hvort sem það er [[XML]]- eða [[HTML]]-skjal.
==== klasar ====
**Hægt er að tengja mörk saman með klösum** (e. classes). **Það er gert með því að láta markið vera með eigindið `class` sem hefur klasann sem gildi. Hægt er að hafa mark í mörgum klösum og er þá `class` eigindið látið innihalda bilskiptan lista** (lista þar sem gildin eru aðskilin með bili) með klösunum.**

```html
<span class="klasi1">
Hér er texti í klasa 1.
</span>
<p class="klasi1 klasi2">
Og hér er texti í bæði klasa 1 og 2.
</p>
```

**Klasarnir eru valdir með því að hafa punkt og svo klasann strax á eftir.** Hægt er að hafa nafnið á markinu á undan.

```css
.klasi1 {
  color: red;
  text-style: italic;
}

p.klasi2 {
  background-color: green;
  font-style: none;
  font-weight: bold;
}
```

Þetta myndi líta nokkurn veginn svona út:


Hér er texti í klasa 1.


Og hér er texti í bæði klasa 1 og 2.

Þarna hafði `color: red` áhrif á báða klasana en `font-style: italic` hafði bara áhrif á fyrra dæmið.
### ID
**Hægt er að velja mörk eftir því hvaða „ID“ þau hafa. Í [[HTML]] er það gildi <code>id</code> [[eigindi]]sins og í [[XML]] er það gildi <code>xml:id</code>** (strangt til tekið þarf ekki að vera `xml:` á undan `id` en eigindið verður að vera í XML nafnaplássinu (XML Namespace). Það er gert með því að hafa ferhyrning („`#`“) á undan id-inu. Einungis eitt mark er með hvert ID svo að það þarf að hafa kommuskiptan lista yfir ID-in ef velja á mörg mörk.

```css
#id /* velur markið með ID-ið „id“ */ {
  color: yellow;
}

span#merkilegt /* velur span markið með ID-ið merkilegt */ {
  color: red; /* litar textann rauðan */
  text-decoration: underline; /* strikar undir textann */
  font-wheight: bold; /* þykkir letrið með gleiðletri */
  font-size: x-large; /* stækkar leturgerðina */
}
```


#### Gerviklasar
Gerviklasar eru klasar marka sem þurfa ekki endilega að hafa `class` eigindið skilgreint, heldur uppfylla þeir þau skilyrði sem hver klasi setur. Tvípunktur („`:`“) er hafður á undan nafni gerviklasans frekar en punkturinn á undan „venjulegu“ klösunum. Mörk geta færst á milli gerviklasa við aðgerðir notandans.

```css
a:hover /* velur tengla sem notandinn er með bendilinn (tölvumús eða álíka tæki) yfir */ {
  color: blue;
  text-decoration: underline;
}
```


### Stílar
**CSS stílar samanstanda af eigindi og gildi**, þ.e.a.s. hverju á að breyta og í hvað, **rétt eins og [[#Uppbygging|stílreglur]] eru af veljurum og stílum** (hvaða mörkum á að breyta og hvernig).

```css
p {
  color: black; /* Þetta gefur eigindinu color (litinn) gildið black (svartan). Það litar textann svartan. */
}
```

Eigindin og gildin eru venjulega orð á amerískri ensku.

## Kostir CSS
* Í *media* hluta dæmisins að ofan er miðill skjalsins er tilgreindur. Með þessu móti má aðgreina mismunandi útlit á sama innihald (XML/XHTML) fyrir t.d. prentverk eða lófatölvu og vísa þá í mismunandi CSS skjal fyrir hvern og einn miðil.
* Mun auðveldara er að uppfæra útlit yfir heilt vefsvæði þar sem öllum útlitstengdum reglum er haldið til haga í fáum skjölum.
* CSS býður upp á fullkomnari stjórn á útliti skjala.
* CSS býður upp á möguleika sem bæta aðgengi fatlaðra að innihaldi skjala.
* CSS minnkar í mörgum tilfellum stærð skjala.

### Tengt efni
* JSON
* XSL
* HTML
* XHTML
* XML
* XSL Transform
* XSL Formatting Objects

### Tenglar

* W3C CSS staðallinn
* heimasíða vefstílmála á W3C
* Firebug viðbótin fyrir Firefox 
* Instant CSS Code