Professional Documents
Culture Documents
Responsive Web Design - CSS PDF
Responsive Web Design - CSS PDF
CSS
Cascading Style Sheets (CSS) govori pregledniku kako prikazati tekst i drugi sadržaj koji ste
napisali u HTML-u.
Imajte na umu da CSS razlikuje velika i mala slova, stoga pazite na način pisanja slova. CSS je
usvojen od strane svih glavnih preglednika i omogućuje vam upravljanje:
bojom,
fontovima,
pozicijom,
slobodnim prostorima,
veličinama,
dekoracijom,
prijelazima, izmjenama.
Postoje tri glavna načina primjene CSS stiliziranja. Unutarlinijske - inline stilove moguće je
primijeniti izravno u sklopu HTML elemenata pomoću atributa style. Alternativno, CSS
pravila možete staviti u tag oznake style u HTML dokumentu. Konačno, možete pisati CSS
pravila na vanjskom stil listu (dokumentu), a zatim uputiti na taj file u HTML dokumentu.
Iako prve dvije opcije imaju primjenu, većina razvojnih inženjera preferira vanjske stilske
dokumente jer zadržavaju stilove odvojeno od HTML elemenata. Time se poboljšava čitljivost
i ponovna uporaba kôda. Ideja iza CSS je da možete koristiti izbornik za usmjeravanje HTML
elementa u DOM-u (Document Object Model), a zatim primijenite niz atributa za taj element
kako biste promijenili način na koji se prikazuje na stranici.
U ovom odjeljku naučiti ćete kako dodavanje CSS stilova u elemente vašeg CatPhotoApp
može izvršiti izmjenu iz jednostavnog teksta na nešto više.
Imajte na umu da je dobra praksa završiti inline style deklaracije s jednim znakom ; .
...
Postoje stotine CSS svojstava - properties koje je moguće koristiti za promjenu izgleda
nekog element na vašoj stranici.
Kada ste upisali <h2 style = "color: red">CatPhotoApp</h2> , dali ste pojedinačni
inline CSS (stil u liniji) h2 elementu. CSS znači Cascading Style Sheets odnosno
padajuće stilske linije.
To je jedan od načina za dodavanje stilskog svojstva elementu, ali ima bolji način za primjenu
CSS-a.
Unutar tog stilskog bloka stvorite CSS selector (izbornik) za sve h2 elemente. Na primjer,
želite da svi h2 elementi budu crveni, vaš stilsko pravilo izgledat će ovako:
<style>
h2 {color: red;}
</style>
Zapamtite, važno je imati dvije vitičaste zagrade ( { i } ) oko stila svakog stilskog pravila
elementa. Također provjerite je li stil vašeg elementa između stilskih oznaka otvaranja i
zatvaranja - tagova. Konačno, svakako dodajte točka-zarez na kraju svakog stilskog pravila.
Izbrišite atribute linijskog stila u h2 elementu i umjesto toga stvorite CSS style blok. Dodajte
potrebni CSS kako biste sve h2 elemente pretvorili u plavo.
Kako vidimo, stvorili smo CSS klasu nazvanu .blue-text unutar oznaka <style>.
Klasu primjenjujete u HTML elementu na ovaj način:
<h2 class="blue-text">CatPhotoApp</h2>
Primjetimo da bi se naš CSS style element trebao izvesti u trenutku gdje je napisan u kôdu,
ali klasna HTML izjava se ne izvodi tamo gdje je napisana već gdje je primjenjena.
1. <style>
2. .red-text {
3. color: red;
4. }
5. </style>
6.
7. <h2 class="red-text">CatPhotoApp</h2>
8. <main>
9. <p>Click here to view more <a href="#">cat photos</a>.</p>
10. ...
Klase omogućuju korištenje istih CSS stilova na više HTML elemenata. To možete vidjeti tako
da primijenite svoju klasu red-text na prvi p element.
1. <style>
2. .red-text {
3. color: red;
4. }
5. </style>
6.
7. <h2 class="red-text">CatPhotoApp</h2>
8. <main>
9. <p class="red-text">Click here to view more <a href="#">cat
photos</a>.</p>
10.
11. <a href="#"><img src="https://bit.ly/fcc-relaxing-cat" alt="A cute
orange cat lying on its back."></a>
12. ...
...
Veličinu fonta (garnitura štamparskih slova, pismo) kontrolira CSS svojstvo font-size,
ovako:
h1 {
font-size: 30px;
}
Unutar iste <style> oznake koji sadrži vašu red-text klasu, stvorite izbornik za p elemente i
postavite font-size svojstvo na 16 piksela (16px).
1. <style>
2. .red-text {
3. color: red;
4. }
5. p {
6. font-size: 16px;
7. }
1. <style>
2. .red-text {
3. color: red;
4. }
5. p {
6. font-size: 16px;
7. font-family: monospace;
8. }
9. </style>
10.
11. <h2 class="red-text">CatPhotoApp</h2>
12. <main>
13. <p class="red-text">Click here to view more <a href="#">cat
photos</a>.</p>
14. ...
...
Osim određivanja uobičajenih fontova koji se nalaze na većini operativnih sustava, možemo
odrediti i nestandardne, prilagođene web-fontove za upotrebu na našoj web stranici. Postoje
razni izvori za internetske fontove na internetu, ali za ovaj ćemo primjer usredotočiti se na
knjižnicu Google Fonts.
Google fontovi besplatna su knjižnica web-fontova koje možete koristiti u svom CSS-u tako
što ćete uputiti URL od fonta.
Sada uvezimo i primijenimo jedan od Google fontova (ako je Google blokiran u vašoj zemlji,
morat ćete preskočiti ovaj izazov).
Kako biste uvezli Google font, kopirati ćete URL fonta iz biblioteke Google fontova, a zatim ga
zalijepiti u svoj HTML. Za ovaj izazov uvest ćemo font Lobster. Kako biste to učinili, kopirajte
sljedeći isječak kôda i zalijepite ga na vrh uređivača (prije otvornika elementa style):
<link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
Sada možete postaviti Lobster font u svom CSS-u koristei Lobster kao FAMILY_NAME kako
je prikazano u slijedećem primjeru: font-family: FAMILY_NAME, GENERIC_NAME; .
GENERIC_NAME je opcionalan i je zamjenski font ako drugi font nije dostupan. Ovo je
objašnjeno u sljedećem izazovu.
Imena uvezenih fontova razlikuju velika i mala slova i trebaju biti umotana u navodnike ako
postoji razmak u imenu. Na primjer, trebate navodnike za upotrebu fonta "Open Sans", ali ne
i za upotrebu fonta Lobster.
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. .red-text {color: red;}
4. h2 {
5. font-family: Lobster;
6. }
7. p {font-size: 16px; font-family: monospace;}
8. </style>
9.
10. <h2 class="red-text">CatPhotoApp</h2>
11. <main>
12. <p class="red-text">Click here to view more <a href="#">cat
photos</a>.</p>
13. ...
Generička font porodica nije osjetljiva na velika i mala slova. Također, ne zahtjeva navodnike
jer su ključne riječi CSS-a.
Za početak, primijenite monospace font u elementu h2, tako da sada ima dva fonta -
Lobster i monospace.
U zadnjem smo izazovu uvezli font Lobster pomoću oznake veze. Sada komentirajte vezu
prema Google fontu (pomoću HTML komentara kako ste ranije naučili), tako da će uvezeni
font biti nedostupan. Primjetite kako se vaš h2 element degradira na font Monospace.
Bilješka: Ako na računalu imate instaliran Lobster font, nećete vidjeti degradaciju jer vaš
preglednik može pronaći font.
1. <!--
2. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
3. -->
4. <style>
5. .red-text {
6. color: red;
7. }
8. h2 {
9. font-family: Lobster, monospace;
10. }
11. p {
12. font-size: 16px;
CSS ima svojstvo nazvano width koje kontrolira širinu elementa. Baš kao i kod fontova,
koristit ćemo px (piksel) kako bismo odredili širinu slike.
Na primjer, kada bismo stvorili CSS klasu nazvanu larger-image koja daje HTML
elementima širinu od 500 piksela, koristili bismo:
<style>
.larger-image {
width: 500px;
}
</style>
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. .red-text {color: red;}
4. h2 {font-family: Lobster, monospace;}
5. p {font-size: 16px; font-family: monospace;}
6. .smaller-image {
7. width: 100px;
8. }
9. </style>
10.
11. <h2 class="red-text">CatPhotoApp</h2>
12. <main>
13. <p class="red-text">Click here to view more <a href="#">cat
photos</a>.</p>
14. <a href="#"><img class="smaller-image" src="https://bit.ly/fcc-
relaxing-cat" alt="A cute orange cat lying on its back."></a>
...
CSS borders (granična linija) ima svojstva poput style, color i width.
Na primjer, ako bismo htjeli stvoriti temeljnu crvenu liniju debljine 5 piksela oko HTML
elementa, upotrijebiti ćemo ovu klasa:
<style>
.thin-red-border {
border-color: red;
border-width: 5px;
border-style: solid;
}
</style>
Izradite klasu zvanu thick-green-border. Ova klasa treba dodati temeljnu (solid) zelenu
graničnu liniju debljine 10px oko HTML elementa. Primijenite tu klasu na fotografiju mačke.
Imajte na umu da možete dodijeliti više klasa elementu na način što ćete razdvojiti svaku
klasu s razmakom (backspace) unutar class atributa. Na primjer:
<img class="class1 class2">
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. .red-text {color: red;}
4. h2 {font-family: Lobster, monospace;}
5. p {font-size: 16px; font-family: monospace;}
6. .smaller-image {width: 100px;}
7. .thick-green-border {
8. border-color: green;
9. border-width: 10px;
10. border-style: solid;
...
Vaša fotografija mačke trenutačno ima oštre kutove. Možete zaokružiti te kutove s CSS
svojstvom koje se naziva border-radius.
Bilješka: Ovu vježbu moguće je izvršiti na više načina. Na primjer, moguće je dodati border-
radius u klasu .thick-green-border ili u klasu .smaller-image.
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. .red-text {color: red;}
4. h2 {font-family: Lobster, monospace;}
5. p {font-size: 16px; font-family: monospace;}
6. .thick-green-border {
7. border-color: green;
8. border-width: 10px;
9. border-style: solid;
10. border-radius: 10px;
11. }
12. .smaller-image {width: 100px;}
13. </style>
...
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. .red-text {color: red;}
4. h2 {font-family: Lobster, monospace;}
5. p {font-size: 16px; font-family: monospace;}
6. .thick-green-border {
7. border-color: green;
8. border-width: 10px;
9. border-style: solid;
10. border-radius: 50%;
11. }
12. .smaller-image {width: 100px;}
13. </style>
14.
15. <h2 class="red-text">CatPhotoApp</h2>
16. <main>
17. <p class="red-text">Click here to view more <a href="#">cat
photos</a>.</p>
18. <a href="#"><img class="smaller-image thick-green-border"
src="https://bit.ly/fcc-relaxing-cat" alt="A cute orange cat lying on
its back."></a>
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. .silver-background {background-color: silver;}
4. .red-text {color: red;}
5. h2 {font-family: Lobster, monospace;}
6. p {font-size: 16px; font-family: monospace;}
7. .thick-green-border {border-color: green; border-width: 10px; border-
style: solid; border-radius: 50%;}
8. .smaller-image {width: 100px;}
9. </style>
10.
11. <h2 class="red-text">CatPhotoApp</h2>
12. <main>
13. <p class="red-text">Click here to view more <a href="#">cat
photos</a>.</p>
14. <a href="#"><img class="smaller-image thick-green-border"
src="https://bit.ly/fcc-relaxing-cat" alt="A cute orange cat lying on
its back."></a>
15. <div class="silver-background">
16. <p>Things cats love:</p>
17. ...
<h2 id="cat-photo-app">
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. ... ...
4. <form id="cat-photo-form" action="/submit-cat-photo">
5. <label><input type="radio" name="indoor-outdoor" checked>
Indoor</label>
6. <label><input type="radio" name="indoor-outdoor">
Outdoor</label><br>
7. <label><input type="checkbox" name="personality" checked>
Loving</label>
8. <label><input type="checkbox" name="personality"> Lazy</label>
Jedna cool stvar o id svojstvima je, da kao i klase, moguće ih je stilirati pomoću CSS-a.
Jedan id se ne bi trebao upotrijebljavati više puta tj. trebao bi se primijeniti samo na jedan
element. id također ima veću specifičnost (važnost) od klase pa ako se oba primjenjuju na
isti element i imaju proturječne stilove, primijenit će se stilovi id-a.
Evo primjera na koji način ćete svom elementu s id svojstvom cat-photo-element dodati
pozadinsku boju zelene boje. U style element dodaje se:
#cat-photo-element {
background-color: green;
}
Imajte na umu, da se u style elementu klasa uvijek referira stavljanjem . ispred imena. Kod
id-ova stavlja se znak # ispred imena.
Dodajte svom form elementu, koji sada ima id svojstvo cat-photo-form, zelenu (green)
pozadinu.
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. h2 {font-family: Lobster, monospace;}
4. p {font-size: 16px; font-family: monospace;}
5. .red-text {color: red;}
6. .thick-green-border {border-color: green; border-width: 10px; border-
style: solid; border-radius: 50%;}
7. .smaller-image {width: 100px;}
8. .silver-background {background-color: silver;}
9. #cat-photo-form {
10. background-color: green;
11. }
12. </style>
13.
14. <h2 class="red-text">CatPhotoApp</h2>
15. <main>
16. ... ...
17. </div>
18. <form action="/submit-cat-photo" id="cat-photo-form">
19. ...
Sada ćemo malo odložiti naš Cat Photo App i saznati više o HTML styling-u.
Možda ste već primijetili, svi HTML elementi su u osnovi mali pravokutnici.
Tri važna svojstva upravljaju prostorom koji okružuje svaki HTML element: padding (ispuna),
margin (margina) i border (linija, granica).
Element padding određen je količinom prostora između elementa i njegove granične linije
(border).
Ovdje možemo vidjeti da su plavi i crveni četverokut ugniježđeni unutar žutog četverokuta.
Primjetimo kako je crveni četverokut ima viši padding od plavog.
Kada povećamo padding plavog četverokuta, povećat će se udaljenost (padding) između
ispune teksta i obruba oko njega.
1. <style>
2. .injected-text {margin-bottom: -25px; text-align: center;}
3. .box {border-style: solid; border-color: black; border-width: 5px;
text-align: center;}
4. .yellow-box {background-color: yellow; padding: 10px;}
5. .red-box {background-color: crimson; color: #fff; padding: 20px;}
6. .blue-box {background-color: blue; color: #fff; padding: 20px;}
7. <!-- original padding: 10px; -->
8. </style>
9.
10. <h5 class="injected-text">margin</h5>
Margina elementa (margin) kontrolira veličinu prostora između granice elementa (border) i
okolnih elemenata.
Ovdje možemo vidjeti da su plavi i crveni četverokut ugniježđeni unutar žutog četverokuta.
Napominjemo kako crveni četverokut ima veću vrijednost margine - margin nego plavi
četverokut, što ga čini manjim.
Pri povećanju vrijednosti margine (margin) plavog četverokuta, povećat će se udaljenost
između granice i okolnih elemenata.
1. <style>
2. .injected-text {margin-bottom: -25px; text-align: center;}
3. .box {border-style: solid; border-color: black; border-width: 5px;
text-align: center;}
4. .yellow-box {background-color: yellow; padding: 10px;}
5. .red-box {background-color: crimson; color: #fff; padding: 20px;
margin: 20px;}
6. .blue-box {background-color: blue; color: #fff; padding: 20px; margin:
20px;}
7. <!-- original margin: 10px; -->
8. </style>
9. <h5 class="injected-text">margin</h5>
10. <div class="box yellow-box">
11. <h5 class="box red-box">padding</h5>
12. <h5 class="box blue-box">padding</h5>
13. </div>
Margina elementa (margin) kontrolira količinu prostora između granice elementa (border) i
okolnih elemenata.
Ako marginu elementa postavite na negativnu vrijednost, element će se povećati.
1. <style>
2. .injected-text {margin-bottom: -25px; text-align: center;}
3. .box {border-style: solid; border-color: black; border-width: 5px;
text-align: center;}
4. .yellow-box {background-color: yellow; padding: 10px;}
5. .red-box {background-color: crimson; color: #fff; padding: 20px;
margin: -15px;}
6. .blue-box {background-color: blue; color: #fff; padding: 20px; margin:
-15px;}
7. <!-- original margin: 20px; -->
8. </style>
9.
10. <div class="box yellow-box">
11. <h5 class="box red-box">padding</h5>
12. <h5 class="box blue-box">padding</h5>
13. </div>
Ponekad ćete htjeti prilagoditi element tako da ima različiti padding na svakoj strani.
CSS omogućuje kontrolu ispune elementa (padding) na sve četiri strane pomoću padding-
top, padding-right, padding-bottom, i padding-left svojstava.
Odredite plavom četverokutu padding od 40px na gornjoj i lijevoj strani i 20px na dnu i
desnoj strani.
Ponekad ćete htjeti prilagoditi element tako da ima različite margine (margin) sa svake
strane.
CSS vam omogućuje kontrolu margine elementa sa sve četiri strane pomoću margin-top,
margin-right, margin-bottom i margin-left svojstava.
Dajte plavom četverokutu marginu od 40px na gornjoj i lijevoj strani, te na dnu i desnoj
strani od 20px.
1. <style>
2. .injected-text {margin-bottom: -25px; text-align: center;}
3. .box {border-style: solid; border-color: black; border-width: 5px;
text-align: center;}
4. .yellow-box {background-color: yellow; padding: 10px;}
5. .red-box {background-color: crimson; color: #fff; margin-top: 40px;
margin-right: 20px; margin-bottom: 20px; margin-left: 40px;}
6. .blue-box {background-color: blue; color: #fff; margin-top: 40px;
margin-right: 20px; margin-bottom: 20px; margin-left: 40px;}
7. </style>
8. <h5 class="injected-text">margin</h5>
9. <div class="box yellow-box">
10. <h5 class="box red-box">padding</h5>
11. <h5 class="box blue-box">padding</h5>
12. </div>
Ove četiri vrijednosti rade u smjeru kretanja kazaljki na satu: gornji, desni, donji, lijevi, i
učiniti će isti rezultat kao i upotreba padding + određeni smjer instrukcije.
Upotrijebite Clockwise Notation (oznaku za smjer kazaljke na satu) kako biste podesili
".blue-box" klasu na vrijednosti padding na gornjoj i lijevoj strani od 40px odnosno 20px na
donjoj i desnoj stranu.
Ove četiri vrijednosti rade u smjeru kretanja kazaljke na satu: gornji, desni, donji, lijevi, i
učiniti će isti rezultat kao i upotreba margin + određeni smjer svojstava.
Upotrijebite Clockwise Notation (oznaku za smjer kazaljke na satu) kako biste podesili blue-
box klasu na vrijednosti margine na gornjoj i lijevoj strani od 40px odnosno 20px na donjoj i
desnoj stranu.
1. <style>
2. .injected-text {
3. margin-bottom: -25px;
4. text-align: center;
5. }
6. .box {
Dali smo id ili class atribute elementima koje želite specifično stilizirati. Oni su poznati kao
ID i klasni izbornici. Postoje i drugi CSS izbornici s kojima možete odabrati prilagođene
skupine elemenata za stiliziranje.
Pozovimo CatPhotoApp kako bismo ponovo prakticirali CSS izbornike.
Za ovaj izazov koristit ćete odabir atributni izbornik [attr = value] kako biste označili
potvrdne okvire u CatPhotoApp. Ovaj izbornik odabire i stilizira elemente s određenom
vrijednosti atributa. Na primjer, kôd u nastavku mijenja margine svih elemenata s atributom
type i odgovarajućom vrijednošću radio:
[type='radio'] {
margin: 20px 0px 20px 0px;
1. <link href="https://fonts.googleapis.com/css?family=Lobster"
rel="stylesheet" type="text/css">
2. <style>
3. h2 {font-family: Lobster, monospace;}
4. p {font-size: 16px; font-family: monospace;}
5. .red-text {color: red;}
6. .thick-green-border {border-color: green; border-width: 10px; border-
style: solid; border-radius: 50%;}
7. .smaller-image {width: 100px;}
8. .silver-background {background-color: silver;}
9. [type='checkbox'] {margin: 10px 0px 15px 0px;}
10. </style>
11.
12. <h2 class="red-text">CatPhotoApp</h2>
13. <main>
... ...
14. </div>
15. <form action="/submit-cat-photo" id="cat-photo-form">
16. <label><input type="radio" name="indoor-outdoor" checked>
Indoor</label>
17. <label><input type="radio" name="indoor-outdoor">
Outdoor</label><br>
18. <label><input type="checkbox" name="personality" checked>
Loving</label>
19. <label><input type="checkbox" name="personality"> Lazy</label>
20. <label><input type="checkbox" name="personality">
Energetic</label><br>
21. <input type="text" placeholder="cat photo URL" required>
22. <button type="submit">Submit</button>
23. </form>
24. </main>
U posljednjih nekoliko izazova postavili smo marginu ili ispunu elementa u pikselima (px).
Pikseli su duljinska jedinica koja govori pregledniku veličinu ili razmak neke stavke. Uz px, u
CSS-u postoji čitav niz različitih opcija za duljinu koje je moguće koristiti.
Dva glavna tipa jedinica za duljinu su apsolutne i relativne. Apsolutne jedinice vezuju se za
fizičke jedinice za duljinu. Na primjer, in i mm odnose se na inče i milimetre. Apsolutne
duljinske jedinice odgovaraju stvarnoj mjeri na zaslonu, ali postoje razlike ovisno o
razlučivosti zaslona.
Relativne jedinice za duljinu, kao što su em ili rem, odnose se na drugačije vrijednosti za
duljinu. Na primjer, em se temelji na veličini fonta nekog elementa. Ako ga koristite za
postavljanje svoga svojstva font-size, to je relativan odnos prema roditeljskom svojstvu
font-size.
Bilješka: Postoji nekoliko opcija relativnih jedinica koje su povezane s veličinom prozora. One
su objašnjene u odjeljku Responsive Web Design Principles.
1. <style>
2. .injected-text {margin-bottom: -25px; text-align: center;}
3. .box {border-style: solid; border-color: black; border-width: 5px;
text-align: center;}
4. .yellow-box {background-color: yellow; padding: 20px 40px 20px 40px;}
5. .red-box {
6. background-color: red;
7. margin: 20px 40px 20px 40px;
8. padding: 1.5em;
9. }
10. .green-box {background-color: green; margin: 20px 40px 20px 40px;}
11. </style>
12.
13. <h5 class="injected-text">margin</h5>
14. <div class="box yellow-box">
15. <h5 class="box red-box">padding</h5>
16. <h5 class="box green-box">padding</h5>
17. </div>
Dokazati ćemo kako body element postoji, na način da ćemo mu odrediti crnu boju pozadine
(background-color).
To možemo učiniti dodavanjem sljedećeg elementa u style:
body {
background-color: black;
}
1. <style>
2. body {
3. background-color: black;
4. }
5. </style>
Nakon što smo dokazali da svaka HTML stranica ima body element i kako se taj body
element može oblikovati sa CSS-om.
Prisjetimo se kako je moguće oblikovati body element baš kao i svaki drugi HTML element i
kako svi drugi elementi nasljeđuju stilove iz body elementa.
Ponekad će vaši HTML elementi dobiti više stilova koji se međusobno sukobljavaju.
Na primjer, vaš h1 element ne može biti istodobno zelen i ružičast.
Pogledajmo što se događa kada stvorimo klasu koja čini tekst ružičastim, a zatim ga
primijenimo na element. Hoće li naša klasa nadjačati boju body elementa kojem je
dodjeljena, kao CSS svojstvo color: green;?
Napravite CSS klasu nazvanu pink-text koji elementu daje ružičastu boju.
Dajte svom h1 elementu klasu pink-text.
1. <style>
2. body {
3. background-color: black;
4. font-family: monospace;
5. color: green;
6. }
7. .pink-text {
8. color: pink;
9. }
10. </style>
11.
12. <h1 class="pink-text">Hello World!</h1>
Izradite dodatnu CSS klasu nazvanu blue-text koji elementu daje plavu boju. Pazite da se
nalazi ispod pink-text deklaracije.
Primijenite klasu blue-text na svoj h1 element uz postojeću pink-text klasu i vidjet ćemo
tko će pobjediti.
Primjena višestrukih atributa klase u HTML elementu obavlja se ovako:
class = "class1 class2"
1. <style>
2. body {
3. background-color: black;
4. font-family: monospace;
5. color: green;
6. }
7. .pink-text {
8. color: pink;
9. }
10. .blue-text {
11. color: blue;
12. }
13. </style>
14.
15. <h1 class="pink-text blue-text">Hello World!</h1>
Dokazali smo kako preglednici čitaju CSS od vrha prema dnu. To znači da će, u slučaju
sukoba, preglednik koristiti posljednju napisanu CSS izjavu.
Ali to nije sve. Postoje i drugi načini kojima je moguće nadjačati CSS. Sjećate li se ID atributa?
Nadjačat ćemo naše klase pink-text i blue-text, te učiniti h1 element narančastim
dodajući h1 elementu jedan stilizirani ID.
Napomena: Nije bitno je li ova CSS izjava iznad ili ispod klase pink-text, budući da ID
atributi uvijek imaju prednost.
1. <style>
2. body {background-color: black; font-family: monospace; color: green;}
3. #orange-text {color: orange;}
4. .pink-text {color: pink;}
5. .blue-text {color: blue;}
6. </style>
7.
8. <h1 class="pink-text blue-text" id="orange-text">Hello World!</h1>
Dokazali smo kako ID deklaracije nadjačavaju izjave klasa, bez obzira na to gdje su
deklarirane u CSS syle elementu.
Postoje i drugi načini kojima je moguće nadjačati CSS. Sjećate li se in-line stilova (stilovi u
retku)?
Upotrijebite in-line style kako biste naš element h1 učinili bijelim. Prisjetite se, stil u
retku izgleda ovako:
<h1 style="color: green">
1. <style>
2. body {background-color: black; font-family: monospace; color: green;}
3. #orange-text {color: orange;}
4. .pink-text {color: pink;}
5. .blue-text {color: blue;}
6. </style>
7.
8. <h1 style="color: white;" id="orange-text" class="pink-text blue-
text">Hello World!</h1>
Dokazali smo kako će in-line stilovi nadjačati sve CSS deklaracije u style elementu.
Ali čekaj. Postoji još jedan način za nadjačavanje unutar CSS-a. Ovo je najmoćnija metoda. Ali
prije nego što to učinimo, idemo vidjeti zašto biste ikada željeli nadjačati CSS.
U većini situacija koristit ćete CSS biblioteke. One mogu slučajno nadjačati vaš CSS. Dakle,
ako ste potpuno sigurni kako element ima određen CSS stil, koristiti ćete !important.
Hajdemo natrag u našu pink-text deklaraciju. Prisjetimo se kako je pink-text klasa
nadjačana naknadnim klasnim izjavama, ID deklaracijama i in-line stilovima.
Dodajte ključnu riječ !important u deklaraciju vašeg pink-text elementa kako biste 100%
bili sigurni kako će vaš h1 element biti ružičast.
Primjer kako ćete to učiniti jest:
1. <style>
2. body {background-color: black; font-family: monospace; color: green;}
3. #orange-text {color: orange;}
4. .pink-text {color: pink !important;}
5. .blue-text {color: blue;}
6. </style>
7.
8. <h1 id="orange-text" class="pink-text blue-text" style="color:
white">Hello World!</h1>
Jeste li znali da postoje drugi načini za definiranje boja u CSS-u? Jedan od tih načina naziva se
heksadecimalni kôd ili ukratko hex kôd.
Obično upotrebljavamo decimalne brojeve (decimals) ili brojevni sustav s bazom 10, koji
koriste simbole 0 do 9 za svaku znamenku. Heksadecimalni brojevi (hexadecimals ili hex )
imaju brojevnu bazu 16. To znači da koriste šesnaest različitih simbola. Poput decimalnih
brojeva, simboli 0-9 predstavljaju vrijednosti od 0 do 9. A slova A, B, C, D, E, F predstavljaju
vrijednosti od 10 do 15. Ukratko, 0 do F predstavlja znamenku u heksadecimalnom
brojevnom sustavu (hexadecimal), dajući nam 16 ukupno mogućih vrijednosti. Ovdje
možete pronaći više o heksadecimalnim brojevima.
U CSS-u upotrebljavamo niz od šest heksadecimalnih znamenki za prikaz boje: po dvije za
crvenu (R -red), dvije za zelenu (G - green) i po dvije za plavu (B - blue) komponentu. Na
primjer, #000000 je crna boja i također je najniža moguća vrijednost. Ovdje možete pronaći
više informacija o RGB sustavu boja.
body {
color: #000000;
}
Zamijenite riječ black u pozadinskoj boji našeg body elementa s heksadecimalnim prikazom
– hex code, #000000.
Kako smo vidjeli, hex kodovi koriste šest heksadecimalnih znamenki za prikaz boja: po dvije
za crvenu (R - red), dvije za zelenu (G - green) i po dvije za plavu (B - blue) komponentu.
Od ove tri osnovne boje: crvena, zelena i plava, mijenjajući njihov intenzitet, moguće je
stvoriti više od 16 milijuna drugih boja!
Na primjer, narančasta je čista crvena boja pomiješana s nešto zelene i bez plave
komponente. U heksadecimalnom kodu ova boja predstavljena je kôdom #FFA500.
Broj 0 je najmanji broj u heksadecimalnom kodu i predstavlja potpunu odsutnost boje.
Brojka F je najveći broj u heksadecimalnom kodu i predstavlja maksimalnu moguću boju.
Zamijenite nazive boja u našem style elementu s njihovim ispravnim hex kodovima.
Green #00FF00
Orange #FFA500
Red #FF0000
1. <style>
2. .red-text {color: #FF0000;}
3. .green-text {color: #00FF00;}
4. .dodger-blue-text {color: #1E90FF;}
5. .orange-text {color: #FFA500;}
6. </style>
Mnogi se ljudi osjećaju preplavljeni s mogućnošću korišćenja više od 16 milijuna boja. A osim
toga, teško je zapamtiti heksadecimalni kod za određenu boju. Srećom, možete ga skratiti.
Na primjer, heksadecimalni broj za crvenu boju je #FF0000, a može se skratiti na #F00. Ovaj
skraćeni oblik daje jednu znamenku za crvenu boju, jednu znamenku za zelenu i jednu
znamenku za plavu boju.
To smanjuje ukupan broj mogućih boja na oko 4.000. No, preglednici će interpretirati
#FF0000 i #F00 kao iste boje.
Green #0F0
Red #F00
Fuchsia #F0F
1. <style>
2. .red-text {color: #F00;}
3. .fuchsia-text {color: #F0F;}
4. .cyan-text {color: #0FF;}
5. .green-text {color: #0F0;}
6. </style>
7.
8. <h1 class="red-text">I am red!</h1>
9. <h1 class="fuchsia-text">I am fuchsia!</h1>
10. <h1 class="cyan-text">I am cyan!</h1>
11. <h1 class="green-text">I am green!</h1>
Drugi način na koji možete predstavljati boje u CSS-u jest korištenje RGB vrijednosti.
RGB vrijednost za crnu boju izgleda ovako:
rgb(0, 0, 0)
Zamijenimo heksadecimalni kod u pozadinskoj boji našeg body elementa s RGB vrijednošću
za crnu boju: rgb (0, 0, 0).
1. <style>
2. body {
3. background-color: rgb(0, 0, 0);
4. }
5. </style>
Baš kao i kod heksadecimalnog kôda, moguće je kombinirati boje i u RGB sustavu pomoću
kombinacije različitih vrijednosti.
Zamijenite nazive boja u našem style elementu s njihovim ispravnim RGB vrijednostima.
Color RGB
Blue rgb(0, 0, 255)
Red rgb(255, 0, 0)
1. <style>
2. .red-text {color: rgb(255, 0, 0);}
3. .orchid-text {color: rgb(218, 112, 214);}
4. .sienna-text {color: rgb(160, 82, 45);}
5. .blue-text {color: rgb(0, 0, 255);}
6. </style>
7.
8. <h1 class="red-text">I am red!</h1>
9. <h1 class="orchid-text">I am orchid!</h1>
10. <h1 class="sienna-text">I am sienna!</h1>
11. <h1 class="blue-text">I am blue!</h1>
II.38. Koristite CSS varijable kako biste promijenili nekoliko elemenata odjednom
Use CSS Variables to change several elements at once
CSS varijable su snažan način za promjenu više CSS svojstava odjednom mijenjajući samo
jednu vrijednost.
Slijedite upute u nastavku kako biste vidjeli kako promjena samo tri vrijednosti može
promijeniti stil mnogih elemenata.
1. <style>
2. .penguin {
3. /* change code below */
4. --penguin-skin: gray;
5. --penguin-belly: white;
6. --penguin-beak: orange;
7. /* change code above */
8. position: relative;
9. margin: auto;
10. display: block;
11. margin-top: 5%;
12. width: 300px;
13. height: 300px;
14. }
15. .penguin-top {top: 10%; left: 25%; background: var(--penguin-skin,
gray); width: 50%; height: 45%; border-radius: 70% 70% 60% 60%;}
16. .penguin-bottom {top: 40%; left: 23.5%; background: var(--penguin-
skin, gray); width: 53%; height: 45%; border-radius: 70% 70% 100% 100%;}
17. .right-hand {top: 0%; left: -5%; background: var(--penguin-skin,
gray); width: 30%; height: 60%; border-radius: 30% 30% 120% 30%;
transform: rotate(45deg); z-index: -1;}
18. .left-hand {top: 0%; left: 75%; background: var(--penguin-skin, gray);
width: 30%; height: 60%; border-radius: 30% 30% 30% 120%; transform:
rotate(-45deg); z-index: -1;}
19. .right-cheek {top: 15%; left: 35%; background: var(--penguin-belly,
white); width: 60%; height: 70%; border-radius: 70% 70% 60% 60%;}
20. .left-cheek {top: 15%; left: 5%; background: var(--penguin-belly,
white); width: 60%; height: 70%; border-radius: 70% 70% 60% 60%;}
21. .belly {top: 60%; left: 2.5%; background: var(--penguin-belly, white);
width: 95%; height: 100%; border-radius: 120% 120% 100% 100%;}
22. .right-feet {top: 85%; left: 60%; background: var(--penguin-beak,
orange); width: 15%; height: 30%; border-radius: 50% 50% 50% 50%;
transform: rotate(-80deg); z-index: -2222;}
23. .left-feet {top: 85%; left: 25%; background: var(--penguin-beak,
orange); width: 15%; height: 30%; border-radius: 50% 50% 50% 50%;
transform: rotate(80deg); z-index: -2222;}
24. .right-eye {top: 45%; left: 60%; background: black; width: 15%;
height: 17%; border-radius: 50%;}
25. .left-eye {top: 45%; left: 25%; background: black; width: 15%; height:
17%; border-radius: 50%;}
26. .sparkle {top: 25%; left: 15%; background: white; width: 35%; height:
35%; border-radius: 50%;}
27. .blush-right {top: 65%; left: 15%; background: pink; width: 15%;
height: 10%; border-radius: 50%;}
28. .blush-left {top: 65%; left: 70%; background: pink; width: 15%;
height: 10%; border-radius: 50%;}
29. .beak-top {top: 60%; left: 40%; background: var(--penguin-beak,
orange); width: 20%; height: 10%; border-radius: 50%;}
30. .beak-bottom {top: 65%; left: 42%; background: var(--penguin-beak,
orange); width: 16%; height: 10%; border-radius: 50%;}
31. body {background:#c6faf1;}
Kako biste stvorili CSS varijablu, trebate joj dati ime s dvije crtice (name with two dashes)
ispred nje i dodijeliti joj vrijednost (value) kao što je ova:
--penguin-skin: gray;
1. <style>
2. .penguin {
3. /* add code below */
4. --penguin-skin: gray;
5. /* add code above */
6. position: relative;
7. margin: auto;
8. display: block;
9. margin-top: 5%;
10. width: 300px;
11. height: 300px;
12. }
13. ...
Nakon što stvorite svoju varijablu, možete dodijeliti njegovu vrijednost drugim CSS
svojstvima pozivom na ime koje ste joj dali.
background: var(--penguin-skin);
Ovo će promijeniti pozadinu bilo kojeg elementa na koji ciljate u sivo, jer to je vrijednost
--penguin-skin varijable.
Imajte na umu kako se stilovi neće primijeniti ako nazivi varijabli nisu podudarni.
1. <style>
2. .penguin {--penguin-skin: gray; position: relative; margin: auto;
display: block; margin-top: 5%; width: 300px; height: 300px;}
3. .penguin-top {top: 10%; left: 25%;
4. /* change code below */
5. background: var(--penguin-skin);
6. /* change code above */
7. width: 50%; height: 45%; border-radius: 70% 70% 60% 60%;}
8. .penguin-bottom {top: 40%; left: 23.5%;
9. /* change code below */
10. background: var(--penguin-skin);
11. /* change code above */
12. width: 53%; height: 45%; border-radius: 70% 70% 100% 100%;}
13. .right-hand { top: 0%; left: -5%;
14. /* change code below */
15. background: var(--penguin-skin);
16. /* change code above */
Kada upotrebljavate vašu stvorenu varijablu kao vrijednost CSS svojstva, moguće joj je
pridružiti rezervnu vrijednost koju će stranica vratiti ako iz nekog razloga ne može dobiti vašu
varijablu.
Moguće je da netko koristi stariji preglednik koji još nije usvojio CSS varijable, ili možda
njegov uređaj ne podržava vrijednost koju ste naveli. Evo na koji način ćete to raditi:
background: var(--penguin-skin, black);
1. <style>
2. .penguin {--penguin-skin: black; --penguin-belly: gray; --penguin-
beak: yellow; position: relative; margin: auto; display: block; margin-
top: 5%; width: 300px; height: 300px;}
3. .penguin-top {top: 10%; left: 25%;
4. /* change code below */
5. background: var(--pengiun-skin, black);
6. /* change code above */
U našem primjeru varijabla se koristi za postavljanje boje pozadine unutar klase .red-box.
Poboljšamo kompatibilnost preglednika dodajući još jednu background izjavu neposredno
prije postojeće izjave te postavimo njezinu vrijednost na crveno - red.
Kada ste izradili varijablu, ona postaje dostupna za uporabu unutar elementa u kojem ste je
izradili. Također postaje dostupna u svim elementima unutar njega. Ovaj efekt poznat je kao
kaskada.
Zbog toga CSS varijable često su definirane u :root elementu.
Zamislite :root element kao kontejner za cijeli HTML dokument, na isti način kao što je html
element kontejner za body element.
Izradom vaših varijabli u :root-u, bit će dostupne na cijeloj web stranici.
Definirajte varijablu pod nazivom --penguin-belly u izborniku :root i dajte joj vrijednost
pink. Zatim možete vidjeti kako će se vrijednost kaskadirati kako bi se promijenila vrijednost
na ružičastu, svugdje gdje se ta varijabla upotrebljava.
1. <style>
2. :root {
3. /* add code below */
4. --penguin-belly: pink;
Nakon što izradite svoje varijable u :root-u, postavit će se vrijednost te varijable na cijeloj
stranici.
Zatim možete pisati preko te varijable kako bi je ponovno postavili unutar određenog
elementa.
1. <style>
2. :root {
3. --penguin-skin: gray;
4. --penguin-belly: pink;
5. --penguin-beak: orange;
6. }
7. body {
8. background: var(--penguin-belly, #c6faf1);
9. }
10. .penguin {
11. /* add code below */
12. --penguin-belly: white;
13. /* add code above */
14. position: relative;
15. margin: auto;
16. display: block;
1. <style>
2. :root {
3. --penguin-size: 300px;
4. --penguin-skin: gray;
5. --penguin-belly: white;
6. --penguin-beak: orange;
7. }
8. @media (max-width: 350px) {
9. :root {
10. /* add code below */
11. --penguin-size: 200px;
12. --penguin-skin: black;
13. /* add code above */
14. }
15. }
16. .penguin {
17. ...