Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: class- ja id-määritteiden erot

Sivun loppuun

ajv [29.10.2005 23:21:55]

#

Kun käytetään sivujen ulkoasun muotoilemiseen CSS:ää, niin milloin tulisi käyttää class-määrettä ja milloin id-määrettä?
Mikä on käytännössä näiden ero?

Tempfile [29.10.2005 23:44:16]

#

Id on uniikki, eli saman id:n omaavia tageja voi sivulla olla vain yksi. Class sen sijaan voi olla vaikka kuinka monella elementillä sama yhtäaikaa, eli periaatteessa kannattaa käyttää id-selektoreja yksittäisiin elementteihin ja classeja ryhmiin. Eikä mikään tietenkään estä käyttämästä sekä id:tä että classia jonkun tietyn elementin tyylin säätöön yhtäaikaa.

ajv [29.10.2005 23:55:10]

#

Mitä tuolla id:llä sitten saavutetaan? Noh, siihen pääsee vissiin JS:llä käsiksi, mutta jos ajattelee pelkkää CSS:ää. Miksi kannattaa pistää siihen yksittäiseen elementtiin id-attribuutti, eikä class-attribuuttia? Ihan samanlailla voin tehdä class-attribuutista uniikin käyttämällä sitä vain kerran.

Siis esim header-divi, joka esiintyy sivulla vain kerran, niin miksi siinä kannattaa käyttää tuota id-attribuuttia eikä class-attribuuttia? Käytännössä ajavat kumminkin saman asian.

leftover [30.10.2005 07:43:52]

#

css-discuss puolelta löytyy loistava artikkeli lontooksi luokkien ja id:n eroista. Suurin hyöty id:n käyttämiseksi on IMO linkittäminen, pääset uniikin id:n omaavan elementin yläosaan helposti linkillä muotoa <a href="#uniikkiid">uniikki-id</a>.

ajv [30.10.2005 22:14:02]

#

Kiitos leftover linkistä. Olen tässä nyt puolitosissani yrittänyt selvittää tätä kysymystä ja mistään nyt ei löytynyt suoraa vastausta. Konkreettiset erot ovat nuo, että id-attribuuteilla varustettuihin kenttiin voidaan linkittää sekä niihin päästään käsiksi JavaScriptillä. CSS:n kannalta ei käsittääkseni ole mitään muuta kuin kosmeettinen ero. Tominnallisesti päästään samaan tulokseen käyttämällä pelkkiä class-attribuutteja, mutta käyttämällä kumpiakin fiksusti yhdessä saadaan lisää selkeyttä niin html-koodiin kuin CSS-tiedostoon.

Blaze [30.10.2005 23:05:13]

#

Selektorien spesifisyydessä ID:llä ja classilla on eroa. Sitä onneksi harvemmin tarvitsee ajatella.

ajv [30.10.2005 23:11:39]

#

Mitähän tämä spesifisyys käytännössä tarkoittaa? Tuosta oli juttua jo tuolla aikaisemmassa linkissä, mutta ei oikein auennut...

Blaze [31.10.2005 08:15:09]

#

Perussääntöhän CSS:ssä on, että viimeiseksi määritelty jää voimaan.
Jos mulla on <div id="palle" class="muuli">tekstiä</div> ja seuraavanlainen tyylisivu:

div {
  color: #000;
}

div {
  color: #f00;
}

Tulee tekstistä punainen.

Jos tyylisivu lukeekin

#palle {
  color: #000;
}

.muuli {
  color: #f00;
}

tulee tekstistä mustaa, sillä vaikka molemmat selektorit pätevät tuohon elementtiin ID-selektori on spefisifempi ("tarkempi") ja voittaa, vaikka class onkin määritelty myöhemmin.

ajv [31.10.2005 09:18:10]

#

Ahaa, johan selkis, kiitoksia vastauksista!

Juice [31.10.2005 20:26:46]

#

!important-määreellä voi saada tahtonsa väkisin läpi:

#palle {
  color: #000;
}

.muuli {
  color: #f00 !important;
}

Tällöin tekstistä tulee punaista. Ihan näin heittona.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta