CSS omogoča samodejno številčenje in vstavljanje dodatne vsebine z uporabo števcev in lastnosti content. Ta pristop je uporaben pri številčenju naslovov, večnivojskih seznamov, korakov v navodilih, opomb in podobnih vsebin.
Generirana vsebina se najpogosteje prikaže s psevdoelementoma ::before in ::after. Tako lahko določene oznake, številke ali krajša pojasnila dodamo v prikaz, ne da bi jih morali zapisati neposredno v HTML kodo.
Pomni: CSS števec ni isto kot navaden besedilni zapis številke. Vrednost števca se lahko samodejno povečuje, ponastavlja ali prikazuje na različnih mestih v dokumentu.
Pri delu s CSS števci najpogosteje uporabljamo lastnosti counter-reset, counter-increment in counter-set ter funkciji counter() in counters(). Števec se običajno prikaže z lastnostjo content v psevdoelementu ::before ali ::after.
Osnovna pravila
- Števec moramo najprej ustvariti ali ponastaviti.
- Vrednost števca običajno povečujemo na elementih, ki jih želimo številčiti.
- Za prikaz števca uporabimo lastnost
content. - Za enonivojsko številčenje uporabimo funkcijo
counter(), za gnezdeno pa pogostocounters(). - Generirana vsebina je uporabna kot dopolnitev prikaza, ne kot nadomestilo za pravilno HTML strukturo.
Pozor: Generirana vsebina ni zapisana neposredno v HTML kodi. Zato je ne uporabljamo za bistveno vsebino dokumenta, ki mora biti nujno prisotna v izvorni strukturi strani.
Osnovni gradniki CSS števcev
Pri samodejnem številčenju se najpogosteje uporabljajo naslednje lastnosti in funkcije:
| Lastnost ali funkcija | Pomen |
|---|---|
counter-reset |
ustvari števec ali ga ponastavi na začetno vrednost |
counter-increment |
poveča ali zmanjša vrednost števca |
counter-set |
nastavi obstoječi števec na določeno vrednost |
counter(ime) |
vrne trenutno vrednost posameznega števca |
counters(ime, ločilo) |
združi vrednosti več gnezdenih števcev z izbranim ločilom |
content |
vstavi generirano vsebino, na primer številko števca |
Najpreprostejši primer izgleda takole:
.primer {
counter-reset: stevec;
}
.primer p:before {
counter-increment: stevec;
content: counter(stevec) ". ";
}
Pomni: Če pri counter-reset začetne vrednosti ne določimo, se števec postavi na 0. Prva povečana vrednost bo zato navadno 1.
Samodejno številčenje naslovov
Pri številčenju naslovov običajno uporabimo en števec za glavne naslove in drugega za podnaslove. Ob vsakem novem glavnem naslovu podštevec ponovno nastavimo na začetno vrednost.
Če pri counter-reset ne navedemo začetne številke, se števec postavi na 0. Če nato elementu dodamo counter-increment, bo prva prikazana vrednost 1.
<div id="counter">
<h1>Glavni naslov</h1>
<p>Lorem ipsum dolor sit amet...</p>
<h1>Glavni naslov</h1>
<p>Sed eget risus ac felis...</p>
<h2>Podnaslov</h2>
<p>Donec convallis scelerisque dapibus...</p>
<h2>Podnaslov</h2>
<p>Sed vestibulum augue...</p>
<h2>Podnaslov</h2>
<p>Suspendisse bibendum...</p>
<h1>Glavni naslov</h1>
<p>Nulla pharetra, lectus a...</p>
<h1>Glavni naslov</h1>
<p>Integer at velit nisi...</p>
</div>
#counter {
counter-reset: section;
}
#counter h1 {
counter-increment: section;
counter-reset: sub-section;
}
#counter h1:before {
content: counter(section) ". ";
}
#counter h2:before {
counter-increment: sub-section;
content: counter(section) "." counter(sub-section) " ";
}
Glavni naslov
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas pharetra, est quis sollicitudin vulputate, quam nibh aliquam odio, in commodo mi lorem eget dolor.
Glavni naslov
Sed eget risus ac felis aliquam pellentesque. Nam sodales sollicitudin odio semper tincidunt. Phasellus id finibus tellus.
Podnaslov
Donec convallis scelerisque dapibus. Aenean aliquet ut erat sed bibendum. Praesent pharetra justo sit amet massa lobortis rhoncus.
Podnaslov
Sed vestibulum augue leo, nec iaculis quam ullamcorper sit amet. Donec laoreet dictum sem, ac luctus urna commodo a.
Podnaslov
Suspendisse bibendum sapien vitae lorem lacinia, ac mattis libero interdum.
Glavni naslov
Nulla pharetra, lectus a fringilla maximus, quam tortor facilisis elit, vitae faucibus magna tortor vitae est.
Glavni naslov
Integer at velit nisi. Nam eu tempus magna, eu tristique magna. Etiam interdum venenatis nulla vel commodo. Integer non congue mi.
Samodejno številčenje gnezdenih seznamov
Pri gnezdenih seznamih je posebej uporabna funkcija counters(), saj lahko združi vrednosti vseh trenutnih nivojev v eno številko, na primer 1.2.3.
<div id="counter2">
<ol>
<li>Besedilo v 1. nivoju
<ol>
<li>Besedilo v 2. nivoju
<ol>
<li>Besedilo v 3. nivoju: prva postavka</li>
<li>Besedilo v 3. nivoju: druga postavka</li>
<li>Besedilo v 3. nivoju: tretja postavka</li>
</ol>
</li>
<li>Besedilo v 2. nivoju</li>
</ol>
</li>
<li>Besedilo v 1. nivoju</li>
</ol>
</div>
#counter2 ol {
counter-reset: section;
list-style-type: none;
}
#counter2 ol li {
counter-increment: section;
}
#counter2 ol li:before {
content: counters(section, ".") ". ";
}
- Besedilo v 1. nivoju
- Besedilo v 2. nivoju
- Besedilo v 3. nivoju: prva postavka
- Besedilo v 3. nivoju: druga postavka
- Besedilo v 3. nivoju: tretja postavka
- Besedilo v 2. nivoju
- Besedilo v 2. nivoju
- Besedilo v 1. nivoju
Pozor: Pri gnezdenih seznamih moramo paziti, na katerem nivoju ustvarimo in povečujemo števec. Če je logika napačno določena, se številke ne bodo ujemale s pričakovano strukturo.
Številčenje korakov
CSS števce pogosto uporabljamo tudi za navodila po korakih. V takem primeru lahko vsak odstavek, element seznama ali drug blok dobi svojo zaporedno številko.
<div id="counter3">
<p>Odpri datoteko HTML.</p>
<p>Dodaj povezavo do slogovne datoteke.</p>
<p>Shrani spremembe in osveži brskalnik.</p>
</div>
#counter3 {
counter-reset: korak;
}
#counter3 p:before {
counter-increment: korak;
content: "Korak " counter(korak) ": ";
}
Odpri datoteko HTML.
Dodaj povezavo do slogovne datoteke.
Shrani spremembe in osveži brskalnik.
Začetna vrednost števca
Števec lahko začnemo tudi pri drugi vrednosti. Če na primer zapišemo counter-reset: poglavje 2;, bo prvi naslednji prikazani naslov označen s številko 3.
<div id="counter4">
<h3>Uvod</h3>
<h3>Osnovni pojmi</h3>
<h3>Povzetek</h3>
</div>
#counter4 {
counter-reset: poglavje 2;
}
#counter4 h3:before {
counter-increment: poglavje;
content: "Poglavje " counter(poglavje) " – ";
}
Uvod
Osnovni pojmi
Povzetek
Lastnost counter-set
Lastnost counter-set nastavi števec na določeno vrednost. V primerjavi z counter-reset je uporabna predvsem takrat, ko želimo na določenem mestu spremeniti vrednost že uporabljenega števca.
Primer:
<div id="counter5">
<p>To je prva opomba po nastavitvi vrednosti.</p>
<p>To je druga opomba po nastavitvi vrednosti.</p>
<p>To je tretja opomba po nastavitvi vrednosti.</p>
</div>
#counter5 {
counter-set: opomba 4;
}
#counter5 p:before {
counter-increment: opomba;
content: "Opomba " counter(opomba) ": ";
}
To je prva opomba po nastavitvi vrednosti.
To je druga opomba po nastavitvi vrednosti.
To je tretja opomba po nastavitvi vrednosti.
Priporočila
- CSS števce uporabljaj tam, kjer želimo samodejno in dosledno številčenje.
- Za večnivojske strukture premišljeno določi, kje števec nastane in kje se povečuje.
- Generirano vsebino uporabljaj kot dopolnitev prikaza, ne kot nadomestilo za bistveno vsebino.
- Pri seznamih še vedno uporabljaj ustrezne HTML oznake, kadar imajo semantični pomen.
- Pri naslovih in navodilih preveri, ali je samodejno številčenje res pregledno in smiselno.
CSS števci so zelo uporabni za samodejno številčenje, vendar z njimi ne smemo nadomeščati prave semantike HTML. Pri seznamih še vedno praviloma uporabljamo ol in li, pri naslovih pa oznake h1 do h6. CSS števci naj takšno strukturo dopolnjujejo, ne pa nadomeščajo.
Pogoste napake
- Števec ni ponastavljen ali ustvarjen na ustreznem mestu.
- Vrednost števca se povečuje na napačnem elementu.
- Pri gnezdenih seznamih ni pravilno uporabljena funkcija
counters(). - Generirana vsebina se uporablja za bistvene podatke, ki bi morali biti del HTML dokumenta.
- Predpostavlja se, da bo CSS števec sam nadomestil pravilno pomensko strukturo HTML.