nav_dugme codeBlog codeBlog
  • početna Početna stranica
  • Sačuvani članci Sačuvani članci
  • Članci
     (spisak)
  • Kontakt
Povratak na vrh stranice

Info & povezani članci Info o članku - dugme

Info

trejler_sat Datum objave: 29.09.2020.

trejler_dokument Jezici: HTML,
CSS

trejler_teg_narandzasti Težina: 3/10

HTML
CSS
web dizajn
internet
dom
frontend
teorija

Tema: Web dizajn

1. Početni koraci3. CSS Box i pseudoklase4. Tagovi div i span - Flex box5. HTML 5 struktura i tagovi - Podela stranice6. Responzivni web dizajn7. Podešavanja editora i efikasna obrada tekstaUvod u JavaScript i DOM (Document Object Model)

Povezani članci

Osnove računarske grafike i formati slika u web dizajnuFontovi u web dizajnu (osnove tipografije)Pokretanje lokalnog web serveraUvod u PHP i back-end programiranjeStruktura web adresa i pristup internet stranicamaNapredni parametri internet pretrageLokalno skladištenje podataka browsera (sessionStorage, localStorage, cookies)Izbor prvog programskog jezikaAsinhrono programiranje u JavaScriptuASCII, Unicode i UTF - Predstavljanje znakova na računarima
Svi članci
Before software can be reusable it first has to be usable.
Ralph Johnson

Uvod u web dizajn - 2. deo - Klasa - Id - Interni i linijski CSS

Facebook LinkedIn Twitter Viber WhatsApp E-mail
zoom_plus zoom_minus bookmark
početna > Članci > Saveti

Uvod

Prethodni članak završili smo uvodom u CSS i pokazali smo kako se preko selektora može uticati na prikaz HTML elemenata, međutim, osvrnuli smo se na selektore koji utiču na sve elemente (tj. tagove) određene kategorije - odjednom - bez mogućnosti pristupa pojedinačnom elementu (ili grupi elemenata), kao i bez mogućnosti izuzimanja pojedinačnih elemenata i podgrupa elemenata (na primer "p" selektor utiče na sve pasuse, "h2" selektor na sve podnaslove i sl).

Navedeni pristup je i te kako koristan (sam po sebi), ali, često je potrebno da budemo precizniji pri obraćanju različitim elementima, i (takođe), u svemu dobro dođu i dodatne mogućnosti (za koje smo još u prvom članku najavili da postoje).

Ukoliko selektor treba da se obrati određenom podskupu elemenata ili pojedinačnom elementu - potrebno je definisati odgovarajuću klasu ili id, sa čime ćemo se upoznati direktno u nastavku, a nakon što se upoznamo sa id selektorima i selektorima za klase, upoznaćemo se i sa mogućnostima za kombinovanje selektora.

Klasa i id - opšte osobine

Upotreba klasa i id-ova podrazumeva: kreiranje CSS selektora sa određenim nazivom i označavanje elemenata u HTML-u istim nazivom, pri čemu je svrha takvog pristupa - obraćanje pojedinačnim elementima ili grupama elemenata preko CSS-a.

Id koji je pripisan elementu u HTML kodu ima bitnu ulogu i u JavaScript-u, ali, to je tema za jedan od budućih članaka (pošto završimo uvodni serijal o HTML-u i CSS-u).

Nazivi klasa i id-ova mogu počinjati samo slovima i ne smeju sadržati razmake i specijalne znakove, ali, na svim pozicijama posle prvog znaka mogu se naći i cifre, kao i crtice i podvučene crte.

Osim pravila koje smo prethodno naveli, ne postoje druga ograničenja, što znači da se klasama i id-ovima mogu davati proizvoljna imena, ali, svakako je preporučljivo da imena id-ova i klasa budu deskriptivna (to jest, preporučljivo je da se po nazivu, jasno može prepoznati namena klase ili id-a).

Nazivi kao što su plavi_okvir i zeleno_dugme svakako su mnogo bolji i primereniji od naziva id_1 i klasa_2 (a nazivi nalik na navigaciona-traka__linkovi i kontakt-stranica__slika-srednja - još su bolji). :)

Klasa - obrazac za pristup grupi elemenata

Klasa u CSS-u predstavlja selektor preko koga se (tipično) * definišu zajedničke osobine grupe HTML elemenata.

* Međutim, ponekad (ni izdaleka retko), CSS klase se povezuju i sa pojedinačnim HTML elementima (više o tome na kraju odeljka).

U CSS kodu, nazivu klase prethodi tačka:

		
.zelena_slova {
	color:     #0044ee;
	font-size: 13pt;
}
		
	
Slika 1. U CSS kodovima, selektori za klase prepoznaju se po znaku "." na početku.

CSS klasa povezuje se sa HTML elementima navođenjem atributa class u odgovarajućem tagu, pri čemu je vrednost atributa class - naziv klase (koji se piše bez tačke):

		
<p class='zelena_slova'>
	Slova ovog pasusa biće obojena zeleno.
</p>
		
	
Slika 2. - Klasa koja je prethodno definisana u CSS-u, može se pozivati u HTML datoteci.

Ako proširimo i dopunimo prethodni HTML kod ....

		
<p class='zelena_slova'>Slova ovog pasusa obojena su zeleno</p>
<p class='zelena_slova'>Slova ovog pasusa obojena su zeleno</p>
<p class='zelena_slova'>Slova ovog pasusa obojena su zeleno</p>
<p>Slova ovog pasusa obojena su zeleno</p>
<p>Slova ovog pasusa obojena su zeleno</p>
		
	
Slika 3. - Primer korišćenja klase.

.... u browseru ćemo dobiti sledeći ispis:

Slova ovog pasusa obojena su zeleno

Slova ovog pasusa obojena su zeleno

Slova ovog pasusa obojena su zeleno

Slova ovog pasusa obojena su zeleno

Slova ovog pasusa obojena su zeleno

Slika 4. - Prikaz HTML bloka koji je definisan na prethodnoj slici.

(Napomena: slova poslednja dva pasusa nisu obojena zeleno!) 🙂

U gornjem primeru, kod za paragrafe zapisan je u jednoj liniji, isključivo zarad preglednosti. Za sve ostale situacije, preporučujemo (i praktikujemo) da otvarajući i zatvarajući tagovi blokovskih elemenata budu u zasebnim redovima.

Takođe, kao što smo prethodno naveli, klase se najčešće pripisuju grupama elemenata, međutim, sasvim često se pripisuju i pojedinačnim elementima.

Na primer: različite HTML datoteke mogu se pozivati na istu CSS datoteku, što znači da selektor koji je prvobitno definisan za grupu elemenata u jednoj HTML datoteci, možda sadrži (baš) sva svojstva koja je potrebno pripisati pojedinačnom elementu u drugoj (novoj) HTML datoteci (na primer, u prvoj datoteci bilo je deset "plavih dugmića", a u drugoj postoji samo jedno dugme - i ne mora se pisati id selektor, već se može iskoristiti prethodno definisani selektor za klasu.

Id - obrazac za pristup specifičnom elementu

U CSS-u, id selektor sadrži atribute preko kojih se definiše stil pojedinačnog objekta.

Umesto tačke, nazivu id selektora prethodi znak "#" ("taraba", odnosno, "hešteg").

		
#crveni_pasus {
	color:     #ee0044;
	font-size: 11pt;
}
		
	
Slika 5. U CSS kodovima, id selektori prepoznaju se po znaku "#" na početku.

Pomalo slikovito: id se može shvatiti kao svojevrstan "JMBG objekta", koji (kao što je ranije navedeno), poseban značaj ima onda kada je objektu potrebno pristupiti preko JavaScript-a.

Povezivanje sa HTML tagovima obavlja se na gotovo isti način kao u (prethodnom) slučaju povezivanja CSS klasa sa HTML tagovima (ali, naravno, atribut koji se ovoga puta koristi je id).

		
<p id='crveni_pasus'>
	Slova ovog pasusa biće obojena crveno.
</p>
		
	
Slika 6. - Id selektor sa prethodne slike, poziva se u HTML dokumentu po istom principu po kome smo ranije pozivali selektore za klase.

Primer koji smo koristili u prethodnom odeljku, ponešto ćemo izmeniti ....

		
<p class='zelena_slova'>Slova ovog pasusa obojena su zeleno</p>
<p class='zelena_slova'>Slova ovog pasusa obojena su zeleno</p>
<p class='zelena_slova'>Slova ovog pasusa obojena su zeleno</p>
<p id='crvena_slova'>Slova ovog pasusa obojena su crveno</p>
<p>Ja se i dalje pravim da sam obojen zeleno</p>
		
	
Slika 7. - Primer korišćenja id selektora (za samo jedan element).

.... a rezultat možemo videti na donjoj slici:

Slova ovog pasusa obojena su zeleno

Slova ovog pasusa obojena su zeleno

Slova ovog pasusa obojena su zeleno

Slova ovog pasusa obojena su crveno

Ja se i dalje pravim da sam obojen zeleno

Slika 8. - Prikaz HTML bloka koji je definisan na prethodnoj slici.

Dodatna pojašnjenja

Spomenuli smo već da je moguće podesiti da se više HTML datoteka istog sajta poziva na jednu CSS datoteku, * i takav pristup je posebno od značaja kada su u pitanju tipski elementi koji se pojavljuju (odnosno ponavljaju) na svakoj od stranica - pri čemu se koristi isti id (na primer, na sajtu na kome se trenutno nalazite, logotip stranice uvek ima id "logo_nav_slika").

* Ne samo da je moguće, već je (najčešće), više nego preporučljivo.

Navedeni pristup nudi sledeće pogodnosti:

  • u kontekstu jedne stranice, element je jedinstven (i prepoznatljiv po svom id-u u odnosu na ostale elemente)
  • u kontekstu celog sajta, budući da se isti element ponavlja na više stranica, ne mora se pisati onoliko CSS selektora koliko ima stranica, već samo jedan selektor (koji je dostupan svim stranicama)

Ako neki od elemenata, koji se ponavljaju na svim stranicama, treba izdvojiti od ostalih (na primer, ako početna stranica treba da ima veći h1 naslov u odnosu na ostale stranice), potrebno je definisati zaseban selektor (jer inače će pri otvaranju početne stranice biti aktiviran univerzalni h1 selektor).

Do sada smo videli da je preko CSS-a moguće obratiti se:

  • HTML tagovima
  • grupi elemenata (preko klase)
  • specifičnom elementu (preko id-a)

.... ali, to nije sve, budući da se selektori mogu i kombinovati.

Kombinovanje selektora

CSS omogućava da se u određenim situacijama selektori dodatno uopšte (i uproste), pri čemu sistem selektora koji smo već videli na delu, postaje još "fleksibilniji" (tj. predusretljiviji prema korisnicima CSS-a).

Grupisanje selektora

Ukoliko primetimo da grupa postojećih selektora ima jedno ili više zajedničkih svojstava (ili, još bolje, ukoliko unapred zaključimo da će biti tako, dok još nismo utrošili vreme na pisanje selektora), moguće je definisati poseban (zajednički) selektor koji sadrži zajedničke atribute ....

		
#navigaciona_traka, .linkovi_stranica  {
	color:       #404040;
	font-size:   13pt;
	font-weight: bold;
}
		
	
Slika 9. - Grupisanje selektora (čime se izbegava pisanje istog koda više puta).

.... a zasebni atributi se potom mogu navesti preko zasebnih selektora ....

		
#navigaciona_traka {
	font-family: 'Times New Roman', serif;
}

.linkovi_stranica  {
	font-family: 'Arial', sans-serif;
}
		
	
Slika 10. - Pojedinačni selektori preko kojih se selektorima, koji su u prethodnom koraku bili definisani grupno, dodaju i zasebna svojstva.

.... čime se povećava preglednost CSS kodova.

Vezivanje selektora

Za razliku od grupisanja selektora (što praktično podrazumeva da se nekoliko selektora samo "stavlja u isti koš"), postoji i način kombinovanja koji podrazumeva da je aktiviranje selektora uslovljeno međusobnim odnosima HTML elemenata, klasa i id-ova.

U praktičnom smislu, mogu se definisati selektori koji utiču (na primer):

  • na opšte elemente (p, a, img .... ), samo ako im je pripisana određena klasa
  • na elemente sa pripisanom klasom - samo ako element ima i određeni id
  • na elemente koji (u HTML hijerarhiji) zauzimaju poziciju unutar drugih elemenata

.... a svakako ima i raznih drugih kombinacija.

Za primer možemo uzeti sledeći HTML kod ....

		
<p id='prvi_pasus' class='plava_slova'>
	Ovo je prvi pasus.
</p>

<a class='plava_slova' href='stranica2.html'>Link: Stranica 2</a>
<a class='plava_slova' href='stranica3.html'>Link: Stranica 3</a>
<a class='plava_slova' href='stranica4.html'>Link: Stranica 4</a>

<p class='plava_slova'>
	Ovaj pasus nije prvi, ali jeste plav.
</p>

<p>
	Ovaj pasus nije ni prvi, ni plav.
</p>

<p>
	Ovaj pasus nije ni prvi, ni plav.
</p>
		
	
Slika 11. - Primer - HTML tagovi koji će biti korišćeni pri vezivanju selektora.

.... koji se povezuje sa sledećim CSS selektorima ....

		
.plava_slova {
	color:       0044bb;
	font-weight: normal;
}

p.plava_slova {
	font-weight: bold;
}

a.plava_slova {
	font-size: 8pt;
}

#prvi_pasus.plava_slova {
	font-size: 20pt;
}

/*
	Nije posebno naglašeno, ali,
	pretpostavka je da veličina fonta
	za "neselektovane" elemente
	iznosi 12pt.
*/
		
	
Slika 12. - CSS kod koji se povezuje sa HTML kodom sa prethodne slike.

.... pri čemu se dobija sledeći rezultat:

Ovo je prvi pasus

Link: Stranica 2 Link: Stranica 3 Link: Stranica 4

Ovaj pasus nije prvi, ali jeste plav.

Ovaj pasus nije ni prvi, ni plav.

Ovaj pasus nije ni prvi, ni plav.

Kao što vidimo:

  • svi elementi kojima je pripisana klasa "plava_slova" (prvih pet elemenata), obojeni su plavo
  • oba pasusa sa klasom "plava_slova", imaju podebljan tekst (p.plava_slova)
  • tekst u prvom pasusu je veći od ostatka teksta (#prvi_pasus.plava_slova)
  • tekst linkova je ispisan manjim slovima u odnosu na ostatak teksta (a.plava_slova)

Selektori za unutrašnje elemente

Ukoliko je potrebno preko CSS-a pristupiti HTML elementu koji se nalazi unutar drugog elementa, zadatak se može rešiti na sledeći način (za primer ćemo uzeti sliku unutar paragrafa):

		
p img {
	width:  150px;
	height: auto;
}
		
	
Slika 13. - Selektor koji utiče na sve img elemente unutar paragrafa.

Praktično, u nazivu selektora opisuje se hijerarhija elemenata, a prikazani selektor utiče na img elemente, ali - samo one img elemente koji se nalaze unutar paragrafa.

(Ostali img tagovi se zanemaruju i, takođe, selektor nema nikakvog direktnog uticaja na paragrafe.)

Obratite pažnju: ukoliko se doda samo jedan zarez između "p" i "img", rezultat je sasvim drugačiji selektor (kao u primeru iz odeljka o grupisanju selektora), i takav selektor utiče na "paragrafe i slike", tj. ne utiče (više) na "slike unutar paragrafa".

Ukoliko se prethodni selektor prepravi umetanjem znaka > ....

		
p > img {
	width:  150px;
	height: auto;
}
		
	
Slika 14. - Selektor koji utiče samo na img elemente koji su (u hijerarhijskom smislu), direktni potomci paragrafa.

.... rezultat je selektor koji (i dalje) utiče na "slike unutar paragrafa", ali - isključivo one slike koje su (u smislu hijerarhije) direktni potomci paragrafa.

Zarad dodatnog pojašnjenja, razmotrićemo primer: ako na sledeći HTML kod primenimo prvi selektor (p img) ....

		
<p>
	<img src='slika_1.jpg'/>
</p>

<p>
	<a href='#'><img src='slika_2.jpg'/></a>
</p>

<img src='slika_3.jpg'/>
		
	
Slika 15. - Primer HTML strukture preko koje možemo bolje razumeti različite načine vezivanja CSS selektora.

.... navedeni selektor će uticati na prve dve slike, dok će drugi selektor (p > img), imati uticaj samo na prvu sliku, budući da je samo prva slika smeštena direktno unutar p tagova. *

* Direktni hijerarhijski "predak" druge slike nije tag p već tag a.

Na treću sliku ne utiče nijedan selektor, jer slika se uopšte ne nalazi unutar paragrafa.

Interni i linijski CSS

Zapisivanje CSS kodova u zasebne datoteke (i pozivanje takvih datoteka u HTML-u), predstavlja svojevrstan standard (sa kojim smo se već upoznali u uvodnom članku), međutim, CSS se po potrebi može zapisati i unutar same HTML datoteke: preko tagova <style>, ili direktno preko atributa style (koji je vezan za određeni HTML element).

Interni CSS

Interni CSS je termin koji se odnosi na CSS kodove koji su zapisani unutar tagova <style>, * direktno unutar samog HTML dokumenta.

		
<head>
	<!-- ostali tagovi (title, meta ....) -->
	<style>
		#selektor1 {
			font-family:     Arial, sans-serif;
			font-weight:     bold;
			color:           #303030;
			text-decoration: none;
		}
	</style>
</head>
		
	
Slika 16. CSS selektori mogu se pisati i unutar HTML dokumenata, ali, to najčešće nije optimalan izbor.

* Tagovi <style> pišu se (tipično ali ne i obavezno), unutar <head> tagova.

Sve ostalo što smo do sada naveli za eksterni CSS (osim, naravno, toga da je zapisan u zasebnoj datoteci :)), važi i za interni CSS.

Zapisivanje CSS kodova unutar HTML datoteke lako može (pre svega) učiniti samu HTML datoteku prilično 'zakrčenom' i nepreglednom (u prevodu: veoma nepreglednom), a u slučaju da sajt koristi više stranica na kojima se delovi CSS koda ponavljaju, može se pojaviti još veći problem ukoliko je (naknadno) potrebno izmeniti određeni deo CSS koda.

Ako kod nije pregledno raspoređen u okviru jedne datoteke, situacija je sledeća: pri kopiranju podataka, ili ('još gore'), ako se izmene upisuju ručno, lako može doći do grešaka ili nedoslednosti.

Sa druge strane, za sajtove koji se sastoje od samo jedne HTML datoteke (sa većom količinom tekstualnog sadržaja i 'ne mnogo' CSS-a), zapis CSS-a unutar HTML datoteke predstavlja korisnu i krajnje prihvatljivu opciju.

Linijski (inline) CSS

Linijski CSS (eng. "inline CSS"), zapisuje se preko atributa style, direktno u tagu koji definiše element koji je potrebno stilizovati, pri čemu takav kod (naravno) nije univerzalan, već se odnosi isključivo na HTML element kome je pripisan:

		
<p style='font-weight: bold; color: #0040b0;'>
	Linijski CSS
</p>
		
	
Slika 17. - Linijski CSS dobro dođe, ali - samo za poneki sitniji zahvat.

Napomenimo takođe da linijski CSS kod ima prioritet u odnosu na interni i eksterni CSS (što je, u širem kontekstu, određeno skupom pravila koja se nazivaju "specifičnost selektora", i određuju koji selektor ima prioritet u određenoj situaciji (ukoliko postoji ikakva dilema oko toga koje pravilo treba primeniti)).

Inline CSS - pretpostavljamo da je očigledno - izrazito je neprikladan način za zapisivanje iole većih količina CSS koda, i stoga (u praksi), sve osim vrlo sporadičnih zahvata preko linijskog CSS-a, najčešće samo umanjuje preglednost).

Dalji koraci ....

Iako nismo prikazali sve opcije za pristup elementima preko selektora, prikazali smo one opcije koje se najčešće koriste, a ostalima ćemo posvetiti više pažnje u narednim člancima.

U sledećem nastavku: Web dizajn - 3. deo, detaljno ćemo analizirati način funkcionisanja modela "CSS box".

Autor članka Nikola Vukićević Za web portal codeblog.rs
Napomena: Tekstovi, slike, web aplikacije i svi ostali sadržaji na sajtu codeblog.rs (osim u slučajevima gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog pismenog odobrenja autora.
© 2020-2026. Sva prava zadržana.
Facebook LinkedIn Twitter Viber WhatsApp E-mail
početna > Članci > Uvod u web dizajn - 2. deo - Klasa - Id - Interni i linijski CSS
codeBlog codeBlog
Sajt posvećen popularizaciji kulture i veštine programiranja.
Napomena: Tekstovi i slike na sajtu codeblog.rs (osim u slučajevima, gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog odobrenja autora.
© 2020-2026. Sva prava zadržana.
Facebook - logo
Instagram - logo
LinkedIn - logo
Twitter - logo
E-mail
Naslovna
   •
Uslovi korišćenja
   •
Obaveštenja
   •
FAQ
   •
Kontakt