Web Početnik

Web Početnik
Naučite što je to HTML, CSS te kako pretvoriti dizajn u
funkcionalnu web stranicu
Igor Benić
This book is for sale at http://leanpub.com/webpocetnik
This version was published on 2014-10-16
This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing
process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and
many iterations to get reader feedback, pivot until you have the right book and build traction once
you do.
©2014 Igor Benić
Also By Igor Benić
WPB3 - Wordpress na Bootstrapu 3.x
Sadržaj
Predgovor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
HTML . . . . . . . . . . . . . . . .
Uvod u HTML . . . . . . . . . .
HTML Elementi . . . . . . . . .
Još Elemenata . . . . . . . . . .
Atributi . . . . . . . . . . . . .
Što je to atribut? . . . . . . . . .
Koliko atributa se može koristiti?
Što dalje? . . . . . . . . . . . .
Poveznice . . . . . . . . . . . .
Slike . . . . . . . . . . . . . . .
Dodatni atributi . . . . . . . . .
Zadatak . . . . . . . . . . . . .
Tablice . . . . . . . . . . . . . .
Još primjera . . . . . . . . . . .
Dodatni atributi . . . . . . . . .
Zaključak . . . . . . . . . . . .
Šta sada? . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
2
4
8
8
9
9
10
12
12
12
12
13
14
15
16
Uvod u CSS . . . . . . . . . . . . . . . . . . .
Alati? . . . . . . . . . . . . . . . . . . . .
Što je to zapravo CSS? . . . . . . . . . . .
CSS sintaksa . . . . . . . . . . . . . . . . .
Gdje pišem CSS? . . . . . . . . . . . . . .
CSS - Boje i pozadina . . . . . . . . . . . .
CSS Fontovi . . . . . . . . . . . . . . . . .
CSS - Tekst i Poveznice . . . . . . . . . . .
CSS - Identifikacija i grupiranje elemenata
CSS - Box model . . . . . . . . . . . . . .
CSS - Floats . . . . . . . . . . . . . . . . .
CSS - Pozicioniranje i z-index . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
17
17
18
19
24
27
30
32
36
37
Moja prva web stranica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
SADRŽAJ
Uvod u Psd2Html . . . . . . . . . .
Rezanje dizajna . . . . . . . . . . .
PSD2HTML - Početna struktura . .
PSD2HTML - Header . . . . . . . .
PSD2HTML - Gornji sadržaj . . . .
PSD2HTML - Slider . . . . . . . . .
PSD2HTML - Donji sadržaj i footer
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
42
52
59
73
83
91
Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Savjetovanje i poduke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
97
Predgovor
Ova knjiga napravljena je kao skup tri tečaja koja se nalazi na www.lakotuts.com¹. Ta tri tečaja
obuhvaćaju učenje HTML-a, CSS-a te pretvaranja dizajna u pravu web stranicu.
Knjiga je namijenjena svima koji nikada nisu otvorili neki editor i počeli izrađivati web stranicu te
može biti primjerena i korisnicima koji se ne bave web stranicama ali ponekad moraju nešto sebi
ili nekome promijeniti preko CSS-a ili HTML-a. Ovom knjigom moći će pratiti samu strukturu web
stranice i snalaziti se u strukturi jer nakon što se prođe cijeli sadržaj knjiga posjedovati će se znanje
za razumijevanje i izradu web stranice.
¹http://www.lakotuts.com
HTML
Uvod u HTML
U ovom serijalu upoznati ćeš HTML (HyperText Markup Language), proći ćeš sa nama većinu
elemenata te stvoriti temelj za daljnje proučavanje HTML-a i izradu web stranica. Za izradu običnih
HTML stranica dovoljan je notepad ( Windows ) ali ja bih ti preporučio da posjetiš našu stranicu sa
popisom Alata² za izradu web projekata i počneš koristiti jedan od alata za razvoj web projekata.
Što je HTML?
HTML je prezentacijski jezik koji služi za prikazivanje informacija putem pretraživača. Ovaj jezik
je temelj za prikazivanje informacija te ćeš naučiti već u par članaka kako napraviti svoju prvu web
stranicu.
Da li mi je potreban server?
HTML ne zahtjeva podršku servera već je dovoljan samo pretraživač i datoteka u kojoj je spremljen
kod od HTML-a.
Što ćemo naučiti prateći ovaj serijal?
Serijal HTML naučiti će te pravljenju osnovne web stranice i korištenju elemenata HTML-a. Serijal
je podijeljen u nekoliko kratkih članaka kako te ne bi zamarali sa svim informacijama u jednom
članku jer bi te to moglo zbuniti i izgledati teško, a zapravo je jako jednostavno. Sljedeći korak za
tebe je da odabereš svoj alat u kojemu ćeš pratiti ovaj serijal, otvoriš svoj najdraži pretraživač i
kreneš čitati dalje :)
HTML Elementi
U prošlom članku upoznali smo se općenito sa HTML-om. Sada je vrijeme za krenemo u dublje
upoznavanje HTML-a. HTML se sastoji od elemenata koji predstavljaju različite vrste sadržaja.
HTML Elementi sastoje se od tagova odnosno sastoji se od otvarajućeg taga, sadržaja i zatvarajućeg
taga.
²http://www.lakotuts.com/alati/
3
HTML
1
<tag>Sadržaj</tag>
Sada kada smo saznali što je to zapravo HTML element možemo napraviti našu prvu praznu stranicu.
Otvori svoj alat za izradu web projekata i upiši sljedeće:
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
<head></head>
<body></body>
</html>
Ovo je početna struktura HTML dokumenta. Početnim <html> i deklaracijom !DOCTYPE pretraživaču govorimo da otvara html dokument i to HTML5 dokument zbog jednostavne i kratke deklaracije
!doctype. Zatim se otvaraju i zatvaraju tagovi head _i _body. Unutar head taga upisujemo podatke
bitne za pretraživača kao što su tzv. meta tagovi kao što je opisni meta tag (description), charset
(npr. utf-8), zatim upisujemo i tag title koji možeš primijetiti kada otvaraš web stranicu na vrhu
otvorenog prozora pretraživača.
Title tag
Tag title na web pretraživaču.O _head _tagu i sadržaju unutar njega pričati ću u kasnijim dijelovima
ovog serijala.
Moja prva web stranica
Unutar taga body upisujemo podatke koje će pretraživač prikazati nama. Tu sve što se upisuje se
prikazuje. Sada ćemo napraviti svoju prvu web stranicu, upiši sljedeće i spremi tu datoteku kao
_.html _npr. index.html
4
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<h1>Moja prva web stranica</h1>
<p>Ovo je moja prva web stranica
i ovdje pišem sav sadržaj koji želim prikazati.</p>
</body>
</html>
Sada kada otvoriš svoj index.html u svojem omiljenom web pretraživaču i pogledaj svoju prvu web
stranicu.
Prva Web stranica
U ovome primjeru koristili smo tag heading h1 i tag paragraph p. Heading se koristi uglavnom za
naslove te se koriste tagovi od h1 do h6 gdje je h6 najmanja veličina naslova dok je h1 najveća veličina
naslova. Paragraph se koristi općenito za tekst. Meta tag charset=”utf-8” daje upute pretraživaču da
koristi skup znakova u kojemu se nalaze i znakovi našeg pisma (č,š,ž….). U sljedećim člancima ovog
serijala upoznati ćeš se sa još nekim HTML elementima.
Još Elemenata
U prošlom članku napravili smo našu prvu web stranicu koja je imala samo naslov i jedan kratki
tekst. U ovome članku unijeti ćemo još malo teksta kako bi to ličilo na nekakvu web stranicu.
5
HTML
Otvorimo našu zadnju stranicu u alatu za izradu web projekata i krenimo proširivati ju. Za sada
unijeti ćemo novi heading tag - h2 koji će biti malo manji od prošlog naslova.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset= "utf-8" />
</head>
<body>
<h1> Moja prva web stranica </h1>
<p>
Ovo je moja prva web stranica i ovdje pišem sav sadržaj koji želim prikazat\
i.
</p>
<h2> Škola HTML-a </h2>
<p> www.lakotuts.com </p>
</body>
</html>
Sada naša web stranica trebala bi ličiti na sljedeće :
Prva web stranica, dodatni elementi
Oblikovanje teksta
Tekstovi izvan i unutar nekih tagova mogu koristiti druge tagove koji služe za oblikovanje prikaza
teksta kao što su tagovi strong, em ili small. Sljedeći zadatak je napraviti neke dijelove naše web
stranice podebljane, neke manje veličine teksta, a neke ukošene. Moj primjer je sljedeći:
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
6
<!DOCTYPE html>
<html>
<head>
<meta
charset="utf-8" />
</head>
<body>
<h1>
Moja prva web stranica
</h1>
<p>
Ovo je moja
<strong> prva web stranica </strong> i ovdje pišem sav
sadržaj koji želim prikazati.
</p>
<h2><em> Škola HTML-a </em></h2>
<small><p> www.lakotuts.com </p></small>
</body>
</html>
Bitno! Potrebno je primijetiti da se ide po redoslijedu otvaranja tagova, tako da što je zadnje
napisano, prvo se zatvara (tzv. LIFO - last in first out). Otvaranje i zatvaranje tagove ne smije se
križati.
Hoću novi red
Novi red se dodaje jednostavnim elementom br koji se zatvara bez sadržaja između na sljedeći način
:
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<h1>Moja prva web stranica</h1>
<p>Ovo je moja <strong>prva web stranica</strong>
<br/> i ovdje pišem sav sadržaj koji želim prikazati.</p>
<h2><em>Škola HTML-a</em></h2>
HTML
13
14
15
7
<small><p>www.lakotuts.com</p></small>
</body>
</html>
Može se primijetiti kako se element za novi red zatvorio na kraći način : . Još jedan takav element
koji se zatvara na kraći način je <hr/> koji dodaje horizontalnu crtu uzduž html dokumenta. Pa ajmo
dodati jednu liniju koja će razdvajati prvi paragraph sa drugim naslovom. Ovdje neću napisati kako
sam napravio to, već očekujem od tebe da napraviš to sam/a. Siguran sam da ćeš uspjeti.
Liste, listanje :O
Da, HTML omogućuje i pisanje listi. Liste se naime mogu napraviti tako da se poredaju po brojevima
ili da budu bez brojeva odnosno odvajaju se nekim znakom. Elementi koji označuju početak i
završetak lista su : 1) <ol></ol> za listu za brojevima i 2) <ul></ul> za listu bez brojeva.
Nakon što se lista otvori, svaki član lista mora biti obilježen sa tagom LI : <li>Naziv člana ili cijeli
sadržaj</li>. Pokušaj sam/a napraviti svoju listu najdražih filmova i pjesama. Neka filmovi budu
poredani po brojevima od najboljeg prema najlošijem kao neka Top lista najprodavanijih filmova.
Ukoliko zapneš ispod možeš pronaći cijeli HTML dokument.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<h1>Moja prva web stranica</h1>
<p>Ovo je moja <strong>prva web stranica</strong> <br/>
i ovdje pišem sav sadržaj koji želim prikazati.</p>
<hr/>
<h2><em>Škola HTML-a</em></h2>
<small><p>www.lakotuts.com</p></small>
<ol>
<li>Film 1</li>
<li>Film 2</li>
<li>Film 3</li>
</ol>
<ul>
8
HTML
23
24
25
26
27
28
<li>Pjesma 1</li>
<li>Pjesma 2</li>
<li>Pjesma 3</li>
</ul>
</body>
</html>
Dodatni Elementi
Evo nas još malo pa pri kraju našeg putovanja kroz HTML. Već si spreman/na na izradu svoje prave
web stranice. Do sljedećeg članka izvježbaj malo ove elemente koje smo prošli i napravi par svojih
stranica.
Atributi
Atributi su važan dio elemenata jer se koriste za specifičniji prikaz sadržaj tj. točnije rečeno za
dodavanje još informacija u neki tag kako bi pretraživaču bilo jasnije što je potrebno napraviti.
Što je to atribut?
Atributi su dio taga koji se nalazi unutar otvarajućeg taga i koriste se za specifičnije određivanje
sadržaja.
1
<h1 style="background-color: #ff0000">Moja prva web stranica</h1>
9
HTML
Ovo je jedan atribut koji daje pozadinu tagu h1.
Atributi - BG
Koliko atributa se može koristiti?
Nema ograničenja kod korištenja atributa u jednom elementu. Razni elementi koriste razne atribute,a
većina atributa su isti kod svakog elementa. Elementi poput i <hr/> taga koji predstavljaju sami sebe
tj. nova linija i horizontalna linija nemaju svoje atribute niti koriste neke zajedničke atribute osim
“style” atributa ukoliko se želi dodati nekakav stil na taj element kao što smo mi dodali pozadinu
tagu h1
Što dalje?
Kako biš uspio/la naučiti većinu atributa i mogao/la ih koristiti na svojoj stranici u svojem alatu
za izradu web projekata isprobavaj različite atribute. Lista atributa na ovoj stranici može ti pomoći
kako bi te usmjerila u atribute : www.w3.org³
**Pažnja! **
Neki atributi se po današnjim standardima više ne koriste - HTML5
³http://www.w3.org/TR/html4/index/attributes.html
HTML
10
U sljedećem tutorijalu upoznati ćemo se sa poveznicama (eng. Link) gdje će se koristiti par čestih
atributa kod poveznica.
Poveznice
Poveznice (eng. Link) su elementi HTML-a koji služe za povezivanje različitog sadržaja tj. različitih
stranica. Poveznica može poslužiti za povezivanje stranica unutar tvojeg web-a ili za povezivanje
stranica drugih web-ova. U ovome tutorijalu naučiti ćeš kako se to radi. Ovaj tutorijal podijeljen je
na više dijelova:
1. Struktura poveznice
2. Linkanje
3. Linkanje unutar stranice
Svaki dio će se opisati i biti prikazan kodom radi lakšeg razumijevanja.
Struktura poveznice
Struktura jedne poveznice sastoji se od nekoliko atributa i taga a. Sve unutar taga smatra se
poveznicom i klikom voditi će na određeno odredište.
1
2
<a href="index.html" title="Moja prva stranica" target="_blank">Moja prva strani\
ca</a>
Može se primijetiti da su dodana tri atributa href, title i target. Vrijednost href atributa predstavlja
stranicu koju želimo dobiti klikom na poveznicu. Atribut title daje dodatan opis poveznici te ga
je najbolje koristiti na poveznicama koje trebaju dodatan opis ukoliko nije jasno iz samog teksta
unutar poveznice ili se title koristi za unos cjelovitog naziva poveznice ukoliko tekst poveznice
nije u potpunosti prikazan (npr. ovaj link je …… , title=”ovaj link je super”). Atribut target je
namijenjen pretraživaču te daje informaciju kako da ga pretraživač otvori. Najčešće korištene
vrijednosti atributa target :
• _blank - poveznica se otvara u novom prozoru ili tabu
• _self - poveznica se otvara u istom prozoru odnosno tabu
Atributi title i target nisu obavezni kako bi poveznica izvršavala svoju funkciju.
Linkanje
Kada linkamo stranice van našeg web-a potrebno je upisati potpunu adresu web stranice. Netočno:
HTML
1
2
11
<a href="www.facebook.com">Facebook</a>
<a href="facebook.com">Facebook</a>
Točno:
1
<a href="http://www.facebook.com">Facebook</a>
Linkanje unutar stranice
Kada želimo linkati stranica unutar našeg web-a nje potrebno upisivati potpunu adresu već je
dovoljno samo upisati putanju do našeg sadržaja. Ne bi bilo ni krivo upisati i potpunu web adresu
našeg sadržaja. Linkanje stranice u istom direktoriju Probajte napraviti sljedeće, pored vašeg
index.html stvorite još jedan dokument i nazvoite ga kako god hoćete. Ja ću za primjer nazvati
dokument index2.html. Kada bi htio povezati taj dokument unutar index.html dovoljno je u atribut
href upisati index2.html i klikom na tu poveznicu otvoriti će nam se naš novi dokument kao nova
web stranica.
1
<a href="http://www.facebook.com">Facebook</a>
Linkanje stranice u sub-direktoriju Ukoliko želimo malo organiziraniju stranicu možemo naše
nove stranice stavljati u neke sub-direktorije (npr. index.html i subFolder/index2.html). Ako želimo
povezati novu stranicu našeg web-a potrebno je upisati cjelovitu putanju do nove stranice.
1
<a href="index2.html">Moja druga web stranica</a>
Linkanje stranice u direktoriju prije
Smjestimo se sada u index2.html. Sada kada bi htjeli povezati index.html preko index2.html-a
potrebno je linkati na drugačiji način. Kako je index.html u direktoriju iznad index2.html potrebno
je napisati sljedeću putanju :
1
<a href="subFolder/index2.html">Moja druga web stranica</a>
Putanja “../” označuje da smo u jednoj razini iznad index2.html te povezujemo se na stranicu
index.html koja se nalazi u tom direktoriju.
Zaključak
Poveznice nam pružaju različite načine povezivanja sadržaja naše web stranice i sadržaja drugih web
stranica. Koristeći jednostavne nazive naših datoteka i direktorija možemo stvoriti lagane putanje
koje će korisnik naše stranice lakše pamtit. Sljedeće što vam je činiti je otvoriti vaš alat u kojem radite
web stranicu i vježbajte povezivanje sadržaja. U sljedećem tutorijalu naučiti ćete kako prikazivati
slike.
HTML
12
Slike
Svaka web stranica danas ima barem nekoliko slika kako bi predstavili sebe, svoj proizvod ili nešto
drugo vezano uz njih i time povećali svoju klijentelu. U ovome tutorijalu naučiti ćeš kako postaviti
slike na svoju prvu web stranicu. Slika ima svoj zasebni element u HTML-u i to je element . Element
se sastoji od nekolicine atributa koji su specifični upravo za taj element. Ti atributi jesu src i alt.
Atribut src pokazuje na putanju do slike kako bi pretraživač mogao doći do slike i prikazati je.
Atribut alt služi za opis te slike koji se prikazuje u slučaju kada je putanja do slike kriva ili je slika
nedostupna.
1
<img src="putanja_do_slike.jpg" alt="Moja prva slika"/>
Može se primijetiti da element slike ima samozatvarajući tag kao što imaju i i <hr/> tagovi.
Dodatni atributi
Dodatni atributi kod elementa img su width i height kojima se određuju dimenzije širine i visine
slike koju prikazujemo. Jedini potreban atribut za prikazivanje slike kod većine pretraživača je src ,
ostali atributi služe za dodatne informacije.
Zadatak
Dajem ti zadatak da dodaš svojoj web stranici sliku. Otvori svoju web stranicu i pogledaj sliku,
zatim upiši krivu putanju do slike i pogledaj ispis atributa alt. Isprobaj različite putanje do slike na
isti način kao što smo u prošlom tutorijalu vidjeli različite putanje do stranica. Radi se na istom
principu tako da se može prikazati i slika sa druge web stranice ukoliko znamo točnu putanju do nje.
Tablice
Tablice kod HTML-a najčešće se koriste za prikazivanje informacija u strukturiranom obliku kao
što je npr. tablica grupe u nogometu, statistika, informacije o vremenu po danima i sl. U ovome
tutorijalu naučiti ćeš osnove tablica kako biš i ti mogao prikazivati svoje podatke u tablicama.
Osnovna struktura jedne tablice izgleda ovako :
HTML
1
2
3
4
5
6
7
8
9
10
13
<table border="1">
<tr>
<td>ćelija 1</td>
<td>ćelija 2</td>
</tr>
<tr>
<td>ćelija 3</td>
<td>ćelija 4</td>
</tr>
</table>
Tag table označuje početak i završetak tablice. Dodan je atribut border=”1” kako bi se obrubi tablice
vidjeli. Tag tr predstavlja redak to tag td predstavlja stupac. U gornjem primjeru možemo dakle
zaključiti da se radi o tablici sa 2 reda i 2 stupca.
Još primjera
Tablica sa 3 reda i 4 stupca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<table border="1">
<tr>
<td>ćelija 1</td>
<td>ćelija 2</td>
<td>ćelija 3</td>
<td>ćelija 4</td>
</tr>
<tr>
<td>ćelija 5</td>
<td>ćelija 6</td>
<td>ćelija 7</td>
<td>ćelija 8</td>
</tr>
<tr>
<td>ćelija 9</td>
<td>ćelija 10</td>
<td>ćelija 11</td>
<td>ćelija 12</td>
</tr>
</table>
Tablica sa 4 reda i 3 stupca
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
14
<table border="1">
<tr>
<td>ćelija 1</td>
<td>ćelija 2</td>
<td>ćelija 3</td>
</tr>
<tr>
<td>ćelija 4</td>
<td>ćelija 6</td>
<td>ćelija 7</td>
</tr>
<tr>
<td>ćelija 8</td>
<td>ćelija 9</td>
<td>ćelija 10</td>
</tr>
<tr>
<td>ćelija 11</td>
<td>ćelija 12</td>
<td>ćelija 13</td>
</tr>
</table>
Dodatni atributi
Elementi tablice kao i sama tablica mogu imati višestruke atribute kao što su border,align,valign,width,colspan,rowsp
i sl. Najčešći su align,colspan i rowspan. Colspan predstavlja koliko neki stupac zauzima mjesta. Npr.
jedan red (tr) sadrži samo jedan stupac koji zauzima mjesta za tri stupca kao sljedeći primjer.
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
15
<table border="1">
<tr>
<td>ćelija 1</td>
<td>ćelija 2</td>
<td>ćelija 3</td>
</tr>
<tr>
<td colspan="3">ćelija 4</td>
</tr>
</table>
Rowspan predstavlja koliko mjesta zauzima stupac, ali u obliku retka kao na sljedećem primjeru.
1
2
3
4
5
6
7
8
9
10
11
<table border="1">
<tr>
<td rowspan="2">ćelija 1</td>
<td>ćelija 2</td>
</tr>
<tr>
<td>ćelija 3</td>
</tr>
</table>
Align kao što i valign _služi za upravljanje položajem teksta unutar ćelije. Align može biti _left,center
i right. Tako da ukoliko imamo postavljeno align=”left” cijeli sadržaj u toj ćeliji biti će postavljen
ulijevo. Kod valign-a imamo sljedeće vrijednosti: top,middle,bottom. Kod ovog atributa koristi se
pozicioniranje po Y-osi odnosno od gore prema dolje. Tako da ukoliko imamo valign=”top” cijeli
sadržaj će početi od vrha ćelije.
Zaključak
Došli smo na kraj serijala HTML u kojem smo prošli najčešće korištene elemente s kojima osoba
koja je prošla ovaj serijal može napraviti svoju web stranicu.
HTML
16
Šta sada?
Nakon ovog serijala potrebno je dalje nastaviti učiti i baviti se HTML-om. Pratite naše ostale
tutorijale, čitajte, gledajte i učite. Jednostavno je, samo je potrebno vježbati. Sljedeći korak bi bio
učenje CSS-a koji je različiti tip jezika te služi za upravljanje izgledom naše web stranice. CSS je
veoma opširan te nije predstavljen u ovome serijalu iz razloga što će CSS biti opisan u zasebnom
serijalu pod nazivom CSS.
Uvod u CSS
CSS je prezentacijski jezik koji služi za određivanje izgleda naše web stranice. Svim elementima
HTML-a možemo promijeniti izgled ili poziciju na našoj web stranici. U ovome serijalu naučiti
ćemo osnove CSS-a kako bi svatko tko prođe ovaj serijal mogao uparavljati izgledom svoje web
stranice.
Alati?
Alati za izradu CSS-a su u većini slučajeva isti alati koji se koriste za izradu HTML stranica odnosno
svih web projekata. Moja preporuka je da koristite alat s kojim vam je najugodnije raditi, a to čak
može biti i Notepad(Windows), Pico(Linux), Simple Text(Mac).
Što je to zapravo CSS?
Riječ CSS je akronim odnosno skraćenica od riječi Cascading Style Sheets. Kao što je prethodno
navedeno, to je prezentacijski jezik za definiranje HTML elemenata odnosno sadržaja web stranice.
To može biti boja slova, pozadina stranice, veličina slova, raspored elementa kao što je npr. slika,
dimenzije elemenata i sl.
CSS sintaksa
Neka svojstva CSS-a mogu se definirati i preko HTML-a (atributi). Ukoliko ste radili već HTML
stranicu onda ćete i prepoznati neke dijelove u CSS-u, ako niste prođite sa nama prvo serijal HTML⁴.
HTML atribut
1
<body bgcolor="#FF0000">
** CSS svojstvo**
1
body {background-color: #FF0000;}
Dakle, možemo primijetiti kako se za element body u CSS-u dodalo svojstvo background-color čija
vrijednost je #FF0000. I HTML atribut i CSS svojstvo ovdje će prikazati jednaku stvar - web stranicu
sa crvenom pozadinom.
⁴http://www.lakotuts.com/serijali/html
Uvod u CSS
18
Gdje pišem CSS?
CSS se može pisati direktno u HTML dokumentu ili se može povezati u HTML dokument. Dikretno
Direktno pisanje CSS-a može biti kao HTML atribut style ili se može dodati unutar tagova style.
Možda je malo zbunjujuće ali dovoljno je pogledati primjere u nastavku i sve će se razjasniti.
HTML atribut style
1
<body style="background-color: #FF0000;">
HTML tag style
1
2
3
4
5
6
<head>
...
<style type="text/css">
body {background-color: #FF0000;}
</style>
</head>
Kada definiramo atribut style, definiramo ga kao svaki atribut unutar HTML elementa, a kod
definiranja CSS unutar taga style stavlja se bilo gdje u HTML dokumentu. Preporučljivo je stavljati
ga u HTML elementu head.
Povezivanje izvana
Kako bi mogli povezati css potrebna je datoteka sa ekstenzijom tj. formata .css koja se sprema uz
HTML dokument ili u nekom drugom subfolderu kao što je npr. css. Ukoliko uzmemo za primjer da
je naša css datoteka, pod nazivom style, u nekom subfolderu nazvanom css, povezujemo je sa HTML
dokumentom na sljedeći način:
1
2
3
4
<head>
...
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
Datoteka CSS može se nazvati kako god se hoće, ali česti nazivi glavne datoteke su style,main,default
i sl. Prednost povezivanja izvana je ta da nije potrebno za svaki HTML dokument pisati ili kopirati
cijeli naš CSS koji može biti poprilično dugačak već naše definicije sadržaja u CSS-u mogu biti
spremljene u zasebnoj datoteci za lakše mijenjanje izgleda a primjenjuju se sa tim jednim pozivom
na svaku HTML stranicu. Još jedna prednost je ta da ukoliko moramo promijeniti npr. boju slova,
nije potrebno otvarati sve naše HTML dokumente sa CSS-om i tamo mijenjati CSS već je potrebno
samo u toj jednoj datoteci CSS promijeniti boju slova i zatim se to mijenja na svakoj HTML stranici
koja je povezana sa našom datotekom CSS.
Uvod u CSS
19
CSS - Boje i pozadina
Na svojoj web stranci ponekad bi željeli prikazati neki element druge boje ili tekst koji prelazi preko
neke slike. Koristeći neka svojstva css-a možemo postići razne efekte na našoj web stranici i učiniti
je unikatnom. U ovome tutorijalu prikazati ćemo par različitih svojstava css-a :
•
•
•
•
•
•
•
color
background-color
background-image
background-repeat
background-attachment
background-position
background
Color
Svojstvo color predstavlja boju teksta nekog HTML elementa. Moguće je na razne načine pisati boje:
• Hexadecimalne vrijednost (#FFFFFF)
• Imena (red, blue, green)
• RGB (rgb(255,0,0))
U ovome serijalu koristiti će se najčešće hexadecimalne vrijednost boja, kao što je na primjer :
1
p {color:#ff00ee;}
U ovome primjeru svaki HTML element p (paragraph) dobiti će rozu boju, tako da :
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<style>
p {color:#ff00ee;}
</style>
</head>
<body>
<h1 style="background-color: red;">Moja prva web stranica</h1>
<p>Ovo je moja <strong>prva web stranica</strong> <br/>
20
Uvod u CSS
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
i ovdje pišem sav sadržaj koji želim prikazati.</p>
<hr/>
<h2><em>Škola HTML-a</em></h2>
<small><p>www.lakotuts.com</p></small>
<ol>
<li>Film 1</li>
<li>Film 2</li>
<li>Film 3</li>
</ol>
<ul>
<li>Pjesma 1</li>
<li>Pjesma 2</li>
<li>Pjesma 3</li>
</ul>
</body>
</html>
će izgledati slično ovome :
CSS - Boja teksta
Boja pozadine
Svojstvo background-color predstavlja boju pozadine nekog HTML elementa. Vrijednost ovog
svojstva piše se na isti način kao i svojstvo color, te u ovom serijalu će se najčešće koristiti
Uvod u CSS
21
hexadecimalna vrijednost boje. Na prethodnoj slici i kodu možemo vidjeti kako je dobiven efekt
crvene pozadine preko HTML atributa style.Ukoliko obrišemo taj atribut i prepišemo vrijednosti
atributa unutar css-a, dobiti ćemo isti efekt. Tako da će sljedeći kod dati jednaki efekt kao i prethodno
napisani kod.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<style>
p {color:#ff00ee;}
h1 {background-color: red;}
</style>
</head>
<body>
<h1>Moja prva web stranica</h1>
<p>Ovo je moja <strong>prva web stranica</strong> <br/> i ovdje pišem
sav sadržaj koji želim prikazati.</p>
<hr/>
<h2><em>Škola HTML-a</em></h2>
<small><p>www.lakotuts.com</p></small>
<ol>
<li>Film 1</li>
<li>Film 2</li>
<li>Film 3</li>
</ol>
<ul>
<li>Pjesma 1</li>
<li>Pjesma 2</li>
<li>Pjesma 3</li>
</ul>
</body>
</html>
Slike u pozadini
Preko CSS-a možemo dodati i slike u pozadinu te se to radi preko svojstva background-image.
22
Uvod u CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<style>
p {color:#ff00ee;}
h1 {background-color: red;}
body {
background-image:url(../css/Untitled-1.jpg);}
</style>
</head>
<body>
<h1>Moja prva web stranica</h1>
<p>Ovo je moja <strong>prva web stranica</strong> <br/> i ovdje pišem
sav sadržaj koji želim prikazati.</p>
<hr/>
<h2><em>Škola HTML-a</em></h2>
<small><p>www.lakotuts.com</p></small>
<ol>
<li>Film 1</li>
<li>Film 2</li>
<li>Film 3</li>
</ol>
<ul>
<li>Pjesma 1</li>
<li>Pjesma 2</li>
<li>Pjesma 3</li>
</ul>
</body>
</html>
Iz ovog primjera dodali smo sliku (slika je uvodna slika ovog serijala) na HTML element body. Kako
je tijelo web stranice puno veće od slike, slika će se ponavljati po x i y koordinati (sa lijeva na
desno, od gore prema dolje). Do slike se dođe slijedećiupute iz serijala HTML gdje smo vas upoznali
sa elementom a (poveznicom) gdje je objašnjeno dodavanje putanje. U ovome primjeru putanja
url(../css/Untitled-1.jpg) označuje da je slika u folderu css koji je jedna razina iznad našeg .html
dokumenta.
23
Uvod u CSS
CSS - slika pozadine
Background - Repeat
Svojstvo background-repeat _koristi se za postavljanje ponavljanja neke pozadine. U prethodnom
primjeru može se primijetiti kako se naša slika serijala ponavlja uzduž i poprijeko. Sa ovim svojstvom
možemo odrediti ponavljanje slike i tako dobiti željeni efekt. Vrijednost _background-repeat-a su
sljedeće :
•
•
•
•
repeat-x : slika se ponavlja po x koodrinati ( s lijeva na desno )
repeat-y : slike se ponavlja po y koordinati (od gore prema dolje)
repeat : slika se ponavlja i po x i po y koordinati
no-repeat: slike se ne ponavlja
Ukoliko odredimo da se slika ne ponavlja, prikazati će se samo jednom i tako ćemo dobiti željeni
efekt na našoj stranici. Sljedeći primjer css-a za body će dati željeni efekt:
1
2
3
body {
background-image:url(../css/Untitled-1.jpg);
background-repeat:no-repeat;}
Uvod u CSS
24
Background-attachment
Sa sljedećim css svojstvom može se odrediti kako će se slika ponašati naspram korisnika stranice
odnosno da li će se pomicati skupa sa njegovim pomicanjem miša ili će stajati cijelo vrijeme na
istom mjestu. Vrijednosti koje možemo primijeniti :
• scroll : slika se miče skupa sa svim HTML elementima
• fixed : slika ostaje cijelo vrijeme na istom mjestu
Isprobajte i jednu i drugu vrijednost kako bi vidjeli efekte tih vrijednosti.
Background-position
Ovo svojstvo određuje poziciju slike u elementu. Uobičajeno je postavljeno gore lijevo, ali ovim
svojstvom mi možemo odrediti da slika bude postavljena u sredini HTML elementa ili negdje drugdje
ako tako hoćemo. Kako se koristi element body, ukoliko odredimo da je vrijednost center center ili
50% 50% slika će biti postavljena u sredini. Vrijednost ovog svojstva mogu se pisati u postotcima,
riječima, pikselima ili mjernim jedinicama kao što je cm. Pišu se uvijek dvije vrijednost jer jedna
označava X koordinatu, a druga Y koordinatu.
Background
Svojstvo bacground predstavlja sva ova svojstva zajedno na jednom mjesto tako da se svi ovi efekti
zajedno mogu dobiti pišući ih u jednom svojstvu _background. _Naravno kako ne bi došlo do
nekih pogrešaka postoji i redoslijed pisanja vrijednosti : [background-color] [background-image]
[background-repeat] [background-attachment] [background-position]
CSS Fontovi
Najvažniji dio web stranice je sadržaj, a sadržaj se sastoji od teksta. Kako bi tekst bio što ugodniji za
čitati koriste se razna css svojstva koja to omogućavaju. U ovome tutorijalu naučiti ćemo css svojstva
vezana uz font. Kao što smo prošli u prošlom tutorijalu css svojstva za pozadinu tako ćemo i u ovome
tutorijalu napraviti za font. Dakle, nekoliko css svojstava vezanih uz font su:
•
•
•
•
•
•
font-family
font-style
font-variant
font-weight
font-size
font
Uvod u CSS
25
Font Family
Css svojstvo font-family predstavlja listu fontova koji se koriste za prikaz teksta kao što je npr.
Arial ili Times New Roman. Lista fontova se gleda sa lijeve na desnu stranu, te ukoliko prvi s lijeve
nije dostupan korisniku naše web stranice, tekst će biti prikazan sa fontom koji je sljedeći po redu.
Postoje dvije kategorizacije fontova: naziv family-a ili opći family. Naziv family-a su npr. Arial ili
Times New Roman, gdje zapisujemo nazive font-a koji će se koristiti, dok je opći family npr. sans ili
sans-serif koji predstavlja skupinu font family-a kao što npr. Arial pripada sans-serifu, dok Times
New Roman i Georgia pripadaju sans-u. Razlikujemo ih po krajevima slova gdje Times New Roman
ima malo produžene/zakrivljene krajeve slova, a Arial nema. Deklaracija font-family-a:
1
2
3
h1 {font-family:Arial,Verdana,sans;}
h1 {font-family:Times New Roman, Georgia, sans-serif;}
U gornjim deklaracijama postavili smo kod prve da ćemo koristiti Arial, ukoliko korisnik nema Arial
instaliran na računalu, koristiti će se Verdana (Mac nema Arial), a ukoliko nema ni tog koristiti će
se raspoloživi sans font. Kod druge deklaracije naveli smo fontove koji spadaju u sans-serif family.
Font-style
Svojstvo font-style označuje način prikaza teksta, a to može biti normal, italic ili oblique.
1
h2 {font-style: italic;}
Font-variant
Font-variant predstavlja način prikaza veličine slova, a može biti normal ili small-caps. Vrijednost
small-caps prikazati će normalni tekst štampanim slovima u manjoj veličini umjesto da se prikazuje
kao običan tekst.
1
2
h1 {font-variant: small-caps;}
h2 {font-variant: normal;}
Font-weight
Font-weight označuje debljinu slova koja se koristi. Uobičajene vrijednosti su normal i bold, iako u
današnje vrijeme vrijednost mogu uz spomenute ići i od 100-900 ( današnji font-family mogu imati
uz regular fontove i light ili bold,semibold fontove koji koriste upravo veličine između 100 i 900).
Uvod u CSS
1
26
h1 {font-weight: bold;}
Font-size
Svojstvo font-size predstavlja veličinu teksta, te se može pisati u vrijednosti px,em,pt,% te u zadnje
vrijeme pretraživači podržavaju i rem. Vrijednost em se računa relativno od elementa u kojem je
tekst kao npr.
1
2
3
4
5
6
7
8
9
<style>
.element1 {font-size:14px;}
.element1 h1 {font-size:2em; /* font-size:28px (2*14)}
</style>
<div class="element1">
<h1>Tekst</h1>
</div>
Rem je malo drugačiji od em-a jer se on računa relativno od body odnosno html elementa.
1
2
3
4
5
6
7
8
9
10
<style>
html {font-size:10px;}
.element1 {font-size:14px;}
.element1 h1 {font-size:2rem; /* font-size:20px (2*10)}
</style>
<div class="element1">
<h1>Tekst</h1>
</div>
Font
Svojstvo font jednako je kao i svojstvo background iz prošlog tutorijala te on sadrži sva font svojstva
na jednom mjestu.
1
2
3
h1 {
font: oblique bold 1em arial, sans-serif;
}
Uvod u CSS
27
CSS - Tekst i Poveznice
U ovome tutorijalu naučiti ćemo kako se upravlja tekstom i poveznicama odnosno koja css
svojstva možemo koristiti kako bi korisnicima naše web stranice sadržaj bio čitljiviji. Ovdje će biti
predstavljena css svojstva za tekst i pseudo klase za poveznice. CSS svojstva za tekst su sljedeća:
•
•
•
•
•
text-indent
text-align
text-decoration
letter-spacing
text-transform
Pseudo-klase za poveznice jesu sljedeće:
•
•
•
•
link
visited
hover
active
Text-indent
Text-indent predstavlja uvlačenje/izvlačenje teksta ovisno o vrijednost lijevo ili desno. Primjenom
text-indent-a možemo na svim odlomcima uvući prvu liniju teksta. To se može napraviti na sljedeći
način:
1
p {text-indent:25px;}
Ukoliko to primijenimo na našoj web stranici na kojoj imamo teksta unutar HTML elementa <p>
dobiti ćemo sljedeće:
1
2
3
4
Ovo je odlomak unutar HTML elementa <p>.
Prva linija odlomka je uvučena 25px jer smo tako odredili
putem css-a. To je super koristiti kod nekih bitnih
tekstova ili uvodnih odlomaka.
Uvod u CSS
28
Text-align
CSS svojstvo text-align koristi se za poravnanje teksta. Tekst je uobičajeno poravnan left iako su
vrijednosti ovog svojstva sljedeće:
•
•
•
•
left
right
center
justify
Poravnanje se odvija s obzirom na element u kojem se tekst nalazi.
Text-decoration
CSS svojstvo text-decoration služi za dodavanje različitih efekata na tekst. Vrijednost ovog svojstva
su sljedeće:
• underline
• line-throught
• overline
Ovo su sve efekti koji se mogu vidjeti i pišući tekst u MS Wordu, tako da ih nije potrebno objašnjavati
kako bi se shvatili.
1
p {text-decoration:overline;}
Letter-spacing
Letter-spacing koristi se za upravljanje razmaka između slova u tekstu. Vrijednosti se mogu pisati u
pikselima (px), em ili rem.
1
p {letter-spacing:2px;}
Css svojstvo text-transform služi za način prikaza teksta. Vrijednost su sljedeće:
• Capitalize - samo početna slova svake riječi su pisana velikim slovom
• uppercase - sva slova su velika, štampana
• lowercase - sva slova su mala
Svim CSS svojstvima može se dodati i vrijednost none ukoliko je potrebno na nekim dijelovima
to svojstvo maknuti.
Uvod u CSS
29
Pseudo-klase
Pseudo-klase predstavljaju različite uvjete ili događaje prilikom definiranja prikaza sadržaja. Najčešće ih se koristi kod poveznica i to kada se mišem prođe preko neke poveznice.
:link
Pseudo klasa Link koristi se za poveznice koje korisnik još nije posjetio odnosno nije kliknuo na njih.
1
2
3
a:link {
color: blue;
}
Svaka poveznica koja nije posjećena, prema gornjem primjeru imati će plavi tekst.
:visited
Ovo je suprotno od prethodnog te predstavlja poveznice koje je korisnik već posjetio.
1
2
3
a:visited {
color: black;
}
:active
Ova pseudo-klasa označava poveznicu koja je trenutno aktivna. Pod aktivnom poveznice smatra se
poveznica koja se trenutno klikće.
1
2
3
4
a:active {
background:red;
}
:hover
Pseudo-klasa :hover predstavlja događaj kada se mišem prođe preko poveznice. Najčešće se tu
mijenja svojstvo text-descorationi ili color.
Uvod u CSS
1
2
3
4
30
a:hover {
color:yellow;
}
CSS - Identifikacija i grupiranje elemenata
Identifikacija i grupiranje elemenata koristi se kako bi se preko CSS-a lakše prikazivalo pojedine
dijelove web stranice. U ovome tutorijalu proučiti ćemo kako na različite načine prikazivati neke
dijelove HTML elemenata i kako ih grupacijom odvojiti od ostalog sadržaja.
Identifikacija
Za identifikaciju elemanta koriste se dva HTML atributa, a to jesu id i class. Oba atributa mogu
se ciljano kontrolirati preko CSS-a, ali je bitno uočiti razliku između oba. Identifikator id koristi se
samo za pojedini HTML element na web stranici tj. ne smiju biti dva ili više HTML elemenata sa
istom vrijednosti id atributa.
Krivo
1
2
3
<h1 id="heading">Ovo je jedan Heading sa H1</h1>
<h2 id="heading">Ovo je još jedan Heading sa H2</h2>
<h1 id="heading">Evo opet jednog headinga H1</h1>
Točno
1
2
3
<h1 id="heading1">Ovo je jedan Heading sa H1</h1>
<h2 id="heading2">Ovo je još jedan Heading sa H2</h2>
<h1 id="heading3">Evo opet jednog headinga H1</h1>
Identifikator class, suprotno od id, može se koristiti na više HTML elemenata, kao npr.
1
2
3
<h1 class="heading">Ovo je jedan Heading sa H1</h1>
<h2 class="heading">Ovo je još jedan Heading sa H2</h2>
<h1 class="heading">Evo opet jednog headinga H1</h1>
Još jedna prednost kod korištenja identifikatora class je ta što ih se može više koristiti na jednom
elementu dok id dopušta samo jednu vrijednost
Uvod u CSS
1
2
3
31
<h1 class="heading color_red">Ovo je jedan Heading sa H1</h1>
<h2 class="heading border_bottom">Ovo je još jedan Heading sa H2</h2>
<h1 class="heading nova_klasa">Evo opet jednog headinga H1</h1>
Dobra praksa nalaže korištenje samo atributa class za CSS, dok se id koristi za javascript, jQuery i
sl.
Zašto, kad mi class i id isto daju?
Korištenje samo class atributa pojednostavljuje nam daljnju izradu naših web stranica. Ukoliko se
koriste i class i id, a pritom još i style u kojem možemo direktno upisati css pravila, dolazi do problema
poznatog kao specifičnost. Specifičnost kod CSS-a određuje što će pretraživač prikazati, a prikazuje
css pravila sa najvećom specifičnosti za određeni element. Prioriteti specifičnosti:
1. Atribut style
2. Atribut id
3. Atribut class
To znači ukoliko bi koristili za jedan element i id i class i style dobili bi sljedeće:
1
2
3
4
5
6
7
8
9
10
11
12
13
<style>
.heading {
font-size:12px;
color:red;
}
#heading {
color:blue:
font-size:15px;
}
</style>
<h1 class="heading" id="heading" style="font-size:20px">Ovo je jedan Heading sa \
H1</h1>
Iz gornjeg primjera možemo vidjeti da je sa klasom heading dano da element ima veličinu fonta
od 12px i crvenu boju teksta. Ali pridodajući mu atribut id, dali smo nova pravila u kojima smo
definirali da će element imati plavu boju teksta i veličinu fonta od 15px. A zatim se sa atributom style
definirala veličina fonta od 20px. Sada će naš h1 element imati veličinu fonta od 20px i plavu boju
teksta. Naša klasa .heading ovdje ne vrijedi ništa niti mijenja išta, dok id #heading daje samo plavu
boju tekstu. Ukoliko zamislimo sada daljnje dorađivanje naše web stranice sa različitim atributima
style i id, izgled će biti teško mijenjati jer nećemo znati što sve treba promijeniti da bi dobili željeni
efekt zbog specifičnosti. Ukoliko bi koristili samo atribut class, mogli bi promijeniti i veličinu fonta
i boju teksta na jednom mjestu i time dobili željeni izgled.
Uvod u CSS
32
Grupiranje elemenata
Grupiranje elemenata se koristi kako bi dio sadržaja naše web stranice mogli prikazati na različitoj
poziciji ili drugačije boje i sl. Grupiranje se izvodi na sljedeći način:
1
2
3
4
5
6
7
8
<div class="prva_grupa">
<h1>Ovo je naslov prve grupe</h1>
<p> Evo i mali tekst prve grupe</p>
</div>
<div class="druga_grupa">
<h1>Ovo je naslov druge grupe</h1>
<p> Pa evo nam i teksta druge grupe</p>
</div>
Sada kad smo grupirali naše elemente, možemo ih lako odvojiti CSS-om:
1
2
3
4
.prva_grupa {background-color:blue;}
.druga_grupa {background-color:red;}
.prva_grupa h1 {font-size:15px;}
.druga_grupa h1 {color:white;}
Ovim CSS pravilima odredili smo da će nam prva grupa imati plavu, a druga grupa crvenu pozadinu,
te smo odredili i različita CSS svojstva za HTML elemente h1 u jednoj i drugoj grupi. Time sam vam
pokazao kako možete lako upravljati izgledom pojedinih HTML elemenata grupiranjem različitih
elemenata u jedan.
CSS - Box model
Box model je model koji “obavija” svaki HTML element. Sastoji se od samog sadržaja, paddinga,border-a i margin-a. U ovome tutorijalu kratko ćemo proći box model kako bi mogli bolje
razumijeti margine i paddinge.
33
Uvod u CSS
Box Model
Box Model
Iz slike se mogu vidjeti gdje se nalaze pojedini, već spomenuti, elementi box modela. U sredini se
vidi veličina sadržaja u omjeru širina x visina. Dakle, uz sve već nabrojane elemente postoje još dva
elementa box modela,a to su širina i visina. Dodavajući vrijednosti raznim dijelovima box modela,
mijenjamo mu izgled, tako da ukoliko smo dodali ovome HTML elementu pozadinu, povećavajući
paddinge, izdužujemo sam HTML element i tako se i pozadina prikazuje duž cijelog elementa.
Dodajući bordere na HTML element vidjet ćemo uz tu pozadinu i krajeve različitih boja i veličina (
to ovisi o nama ). Ukoliko uz sve to dodajemo margine primijetit ćemo kako će se naš HTML element
pomicati s obzirom na susjedne elemente.
Padding
Padding može biti namješten na četiri strane:
•
•
•
•
padding-top
padding-bottom
padding-left
padding-right
Sva ova svojstva su sama po sebi jasna (gore,dolje,lijevo,desno). To sve možemo napisati u jednom
CSS svojstvu pod nazivom padding. Njegove vrijednost jesu gore,desno,dolje,lijevo (u smjeru
kazaljke na satu) pa bi tako:
1
padding: 20px 10px 5px 2px;
značilo da dodajemo padding-top:20px,padding-right:10px;padding-bottom:5px i padding-left:2px.
Povećavajući padding na lijevo i desno, povećavamo tako i cjelokupnu širinu našeg HTML elementa,
a tako i povećavajući gore i dolje, povećavamo visinu našeg HTML elementa.
Uvod u CSS
34
Margin
Margine možemo namještavati jednako kao i paddinge:
•
•
•
•
•
margin-top
margin-bottom
margin-left
margin-right
margin
gdje margin označava vrijednosti svih smjerova margina u jednome kao i kod padding-a. Kod
paddinga i margina možemo namještati i kraće dva smjera (po X i Y koordinati) odjednom odnosno
namještati u jednoj vrijednost gore i dolje, a u drugoj vrijednost lijevo i desno pa tako je i ovo sljedeće
napisano:
1
2
3
margin: 20px 10px;
/** margin-top:20px, margin-bottom:20px;
margin-left:10px; margin-right:10px;**/
Jednako kao i za margine, namješta se i za paddinge.
Border
Border označava rub box modela koji se sastoji od debljine ruba, tipa ruba i boje ruba. Debljina
ruba određuje se najčešće putem piksela.
Tipovi ruba:
35
Uvod u CSS
Tipovi bordera
Boje ruba određuju se kao i sve ostale boje u CSS-u.
1
2
3
4
5
p {
border-width: thick;
border-style: dotted;
border-color: gold;
}
Moguće je jednako tako i određivati pojedine strane bordera :
1
2
3
4
5
6
p {
border-top-width: 20px;
border-top-style: dotted;
border-top-color: blue;
}
Kao i većina CSS svojstva i border se može pisati kao jedno CSS svojstvo :
1
border: 1px solid #fff
Ove vrijednosti bordera označavaju debljinu bordera od 1px, tip solid, a boja bordera je bijela.
36
Uvod u CSS
CSS - Floats
CSS svojstvo float koristi se kako bi se HTML elementi poravnali uz neki drugi HTML element.
U ovome tutorijalu će se kratko prikazati svojstvo float i kako djeluje na druge HTML elemente.
Ukoliko imamo nekakav element i pozicioniramo ga sa float:left, taj element će se poravnatu ulijevo,
dok će ostali sadržaj na stranici ispuniti prazninu nastalu tim elementom i “obavijati” se oko tog
floatanog elementa.
Floatana slika
U gornjem primjeru možemo vidjeti kako se slika “floata” na lijevo te kako se ostali sadržaj “obavija”
oko slike. Ovaj primjer dobiven je sljedećim kodom:
1
2
3
4
5
6
7
8
9
10
11
<div class="slika">
<img src="bill.jpg" alt="Bill Gates">
</div>
<p>causas naturales et antecedentes,
idciro etiam nostrarum voluntatum...</p>
.slika {
float:left;
width: 100px;
}
Moguće vrijednosti svojstva float jesu:
• left
• right
• none
Uvod u CSS
37
Svojstvo clear
Svojstvo clear služi kako bi se nekom elementu ili elementima maknulo relativno pozicioniranje
na “floatani” element. Time bi novi HTML element došao u novi red, ispod floatanih elemenata.
Moguće vrijednosti jesu:
•
•
•
•
left
right
both
none
Najčešće se koristi vrijednost both. Tako da u gornjem primjeru koristimo na HTML elementu p
svojstvo clear:both, cijeli tekst osim naslova prešao bi u novi red, ispod slike. To se koristi kada ne
želimo da neki sadržaj u nastavku web stranice bude pod utjecajem “float-a” nekog HTML elementa.
CSS - Pozicioniranje i z-index
Sa pozicioniranjem preko CSS-a moguće je bilo koji sadržaj dovesti na točno određeno mjesto koje
hoćemo kako bi pravili precizne izglede naše web stranice. U ovome tutorijalu proći ćemo načine
pozicioniranja preko css svojstva position. Ako gledamo na naš pretraživač kao element na kojeg se
relativno pozicioraju ostali elementi, njegov gornji lijevi kut imati će vrijednost 0px 0px tj. top: 0px,
left: 0px. Ukoliko sada želimo nekakav naslov dodati točno 30px od vrha i 100px sa lijeva dodajemo
za takav naslov sljedeći css:
1
2
3
4
5
6
7
8
9
<style>
h1 {
position:absolute;
top:30px;
left:100px;
}
</style>
<h1>Ovo je moj naslov</h1>
CSS svojstvo position može imati sljedeće vrijednosti:
•
•
•
•
absolute
relative
static
fixed
Sa vrijednosti absolute pozicioniramo element relativno na element koji je pozicioniran relative te
sadrži taj element u sebi kao npr:
Uvod u CSS
1
2
3
4
5
38
<div class="relativno">
<h1>OVo je sada novi naslov koji je
apsolutno pozicioniran s obzirom na gornji element</h1>
</div>
Ukoliko želimo da je sada naš naslov unutar HTML elementa h1 pozicioniran tek na desnom kraju
HTML elementa div.relativno koristimo sljedeći kod:
1
2
3
4
5
6
7
8
9
.relativno {
width:200px;
height:20px;
position:relative;
background:red;}
.relativno h1 {
position:aboslute;
right:0;}
Isprobajte ovaj dio CSS-a kako bi vidjeli što će se dogoditi. Uz position:absolute mogu se dodatno
koristiti sljedeća svojstva:
•
•
•
•
top
bottom
left
right
Pozicioniranje sa vrijednosti static, ne gleda niti jedan element koji je relativno pozicioniran nego
se pojavljuje po redoslijedu prikaza HTML elemenata, dok se pozicioniranje fixed odnosni direktno
na pretraživač, a ne kao u slučaju pozicioniranja absolute koji se odnosi na prethodno pozicionirani
elementa sa vrijednosti relative.
Z-index
Z-index se koristi kod prikazivanja različitih elemenata koji zauzimaju isti prostor na web stranici.
To se često postiže kod elemenata koji su pozicionirani relativno ili apsolutno. Uvijek se prikazuje
HTML element sa većim z-indeksom.
39
Uvod u CSS
Z-Index
Prema gornjoj slici možemo primijetiti kako je slika AS sa z-index-om od 5 ispred svih ostalih slika.
Ovakav prikaz je napravljen kako bi se vidio utjecaj z-index-a na različito pozicionirane elemente.
Ukoliko bi svih 5 karata bilo pozicionirano na točno istom mjestu, vidio bi se samo AS kao karta dok
bi sve druge karte bile iza te karte.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#deset {
position: absolute;
left: 100px;
top: 100px;
z-index: 1;
}
#decko {
position: absolute;
left: 115px;
top: 115px;
z-index: 2;
}
#dama {
position: absolute;
left: 130px;
top: 130px;
z-index: 3;
}
#kralj {
position: absolute;
left: 145px;
top: 145px;
z-index: 4;
Uvod u CSS
27
28
29
30
31
32
33
34
40
}
#as {
position: absolute;
left: 160px;
top: 160px;
z-index: 5;
}
Kod je isto preuzet sa html.net kako ne bi stvarali neke nove primjere pri ovome tutorijalu jer je ovo
dosta dobro iskorišten primjer z-index-a te je lako shvatljiv svakome.
Moja prva web stranica
U ovome serijalu napraviti ćemo prvu pretvorbu dizajna iz formata PSD u HTML/CSS.
Uvod u Psd2Html
Psd2Html predstavlja proces pretvorbe dizajna iz PSD formata u HTML format. Prilikom tog procesa
koristi se i CSS. U ovome serijalu napraviti ćemo “Moju prvu web stranicu” čiji PSD možete skinuti
na ovome link-u⁵. Tokom ovog serijala proći ćemo rezanje dizajna i pripremanje dijelova dizajna
koji su nam potrebni pri izradi HTML verzije.
Moja prva web stranica
⁵https://www.dropbox.com/s/31yn7kx27ubypv4/MojaPrvaWebStranica.psd
42
Moja prva web stranica
Dizajn napravljen iz gornje slike biti će izrezran, isjeckan i kako god još hoćete to nazvati i pretvoren
u pravu web stranicu, Vašu prvu web stranicu. Koristiti će se razna CSS svojstva i HTML elementi
te malo jQuery-a tj. javascripte kako bi izradili i slider na kojem će se vrtiti slike projekata. Prilikom
izrade ove web stranice koristiti će se alati Brackets ili Sublime Text 2/3, ovisno o mjestu gdje se
nalazim prilikom pisanja tutorijala ovog serijala.
Rezanje dizajna
Svaki dizajn koji sadrži neke elemente kao što su slike, ikone i sl. režu se iz dizajna kako bi ih mogli
koristiti u izradi naše web stranice. U današnje vrijeme razne ikone se koriste i kao fontovi ali mi
nećemo to koristiti u ovome serijalu već ćemo na jednostavniji način prikazati vam kako se može
jednostavno izraditi web stranica iz nekog dizajna. Otvorite si nekakav direktorij (folder) i nazovite
ga kako god vi hoćete. Ja sam svoj nazvao Moja prva web stranica. Unutar tog foldera napravite još
tri koje ćete nazvati images,css i js. Folder images ćemo danas koristiti i u njega ćemo spremati sve
slike koje ćemo izrezati. Ostali folderi koristiti će nam za CSS i Javascript.
Alat za rezanje
Otvorite naš PSD koji možete skinuti na ovome linku⁶. Alat koji ćemo koristiti za rezanje je običan
Marquee Tool.
alat
Pripremanje za rezanje
Prije rezanja moramo pripremiti naš dokument tako da su nam vidljivi samo elementi koje hoćemo
rezati dok ostale činimo nevidljivima kako ih ne bi dohvatili prilikom rezanja. To činimo tako da
⁶https://www.dropbox.com/s/31yn7kx27ubypv4/MojaPrvaWebStranica.psd
43
Moja prva web stranica
ikonu oka pored svakog layera kliknemo kako je više ne bi bilo, tada to označava da se layer više ne
vidi u dokumentu.
visibility
To ćemo učinti za sve elemente koji nam nisu potrebno kao što je pozadina, tekst, pozadina search-a
i sl. Nakon što sve to sakrite ili ako niste sigurni što sve treba sakriti pogledajte sljedeću sliku:
44
Moja prva web stranica
nakonVisibility
Nakon što smo sve sakrili što nam nije potrebno, otvoriti ćemo novi layer. Prvo se pozicioniramo
na najgornji layer kako bi se novi layer stvorio iznad svih, a zatim ili poklikamo na izborniku Layer
> New > Layer … i kliknemo OK ili pritisnemo Shift+Ctrl+N (Win) / Shift+Command+N (Mac) i
kliknemo OK ili odaberemo sljedeću funkciju prema slici:
45
Moja prva web stranica
pozicioniranjeNewLayer
Nakon što smo stvorili novi layer trebali bi imati ovu sliku:
46
Moja prva web stranica
NewLayer
Time smo dobili prazni layer na kojemu možemo dalje raditi što god hoćemo. Za potrebe ovog
tutorijala, nama treba kompletna slika naših elemenata na jednom layeru iz kojeg ćemo rezati naše
elemente tj. rezati ćemo dijelove slike. Kako smo sada pozicionirani na našem novom layeru potrebno
je stvoriti tu sliku koja sadrži sve naše elemente. To se čini tako da odemo na izbornik Image > Apply
Image… i samo kliknemo OK.
47
Moja prva web stranica
applyImage
Nakon što smo to napravili trebali bi dobiti sljedeće:
nakonImageApply
Možemo primijetiti da sada Layer 2 (naš novi layer) nije više prazan već sada ima nešto na sebi. To
je sada slika svih naših elemenata na jednom mjestu te sada možemo krenuti sa rezanjem elemenata
koji su sada dio jedne slike.
48
Moja prva web stranica
Rezanje
Prvi dio koji ćemo rezati je logo. Odaberemo naš alat za rezanje (Maquee Tool - CTRL/Command
+ M) i krenemo sa rezanjem. Kliknemo na jedno mjesto u našem dokumentu, držimo lijevu tipku
miša i povlačimo tako da se unutar granica alata nalazi naš logo. Evo kako sam ja to napravio:
rezanjeLogo
Nakon što smo označili dio koji želimo rezati pustimo lijevu tipku miša. Sada samo treba to
kopirati jednostavnom naredbom CTRL+C/Command+C. Nakon što smo kopirali otvoriti ćemo novi
Dokument (FIle) u koji ćemo to i kopirati. Otvaranjem novog dokumenta, dimenzije kopiranog bi
trebale biti unesene kao dimenzije dokumenta. Dobra strana ovog načina je što će se kopirati samo
dio koji je vidljiv iako smo mi odabrali puno veću širinu od logo-a, pixeli koji nisu vidljivi se ne
kopiraju. Dakle, u izborniku odaberemo File > New… ili CRTL/Command + N te odaberemo OK.
newNakonCopy
Sada u tom novom dokumentu zalijepimo naš kopirani element (CTRL/Command + P). Time se
49
Moja prva web stranica
stvorio novi layer koji sadrži naš logo. Layer “Background” koji se stvori pri svakom otvaranju
novog dokumenta dovoljno je samo učiniti nevidljivim. To radimo zato da prilikom spremanja slike
nemamo nikakvu pozadinu na slici.
rezanjeLogoaVisibility
Sada, dok još imamo otvoreni novi dokument sa našim logo-om, odemo na izbornik File > Save for
Web.. . Kako bi sliku spremili bez pozadine, potrebno ju je spremiti kao GIF ili PNG, mi ćemo spremiti
u PNG formatu kako bi bila bolje kvalitete, dok se GIF koristi kod jednostavnijih slika koje imaju
jednu/dvije boje. U gornjem desnom izborniku umjesto JPEG odaberemo PNG-24 i kliknemo Save.
Sada je potrebno odabrati destinaciju za našu sliku, a to će biti u folderu images koji smo prethodno
napravili te je spremimo pod nazivom logo. To bi trebalo ovako izgledati:
images
Sada isti postupak koristimo kod svakog elementa. Postupci su sljedeći:
1. Odabrati element sa Marquee Alatom
50
Moja prva web stranica
2.
3.
4.
5.
6.
Kopirati
Otvoriti novi dokument
Zalijepiti kopirani element
Sakriti pozadinu u novom dokumentu
Spremiti za Web (Save as Web..) - ukoliko nema pozadine spremiti kao PNG, ako ima pozadinu
spremiti kao JPEG
7. Nazvati element i spremiti u folder images
Sljedeće slike pokazati će neka rezanja i krajnji rezultat u folderu images.
socialRezanje
label
51
Moja prva web stranica
rezanjeEmail
sliderIkona
Folder nakon što su svi izrezani i pospremljeni bi trebao izgledati ovako:
52
Moja prva web stranica
izrezaneSlike
PSD2HTML - Početna struktura
U prošlom tutorijalu pokazao sam vam kako rezati dizajn i pripremiti sve potrebne ikone. U ovome
tutorijalu upoznati ćemo se sa početnom strukturom web stranice i google fontovima.
Početna struktura
Ukoliko ste slijedili prošli tutorijal imate sve potrebne foldere za našu web stranicu. Sada moramo
napraviti novu datoteku index.html pa otvorite svoj alat za izradu web stranica/projekata i otvorite
novu datoteku te je spremite pod nazivom index.html u folder naše prve web stranice.
Struktura projekta
Zatim otvorite 2 datoteke te jednu nazovite style.css i spremite je u folder css, a za drugu datoteku
učinite sljedeće:
1. Posjetite http://www.cssreset.com/⁷
⁷http://www.cssreset.com/
53
Moja prva web stranica
2.
3.
4.
5.
Odaberite “Get the code” kod Normalize.css 1.0
Kliknite na Minified
CTRL/Command + P u novo otvorenu datoteku
Spremite datoteku u folder css pod nazivom reset.css
css
HTML struktura
Sljedeći dio koda predstavit će našu početnu HTML strukturu koju će sadržati index.html. Nemojte
se preplašiti odmah, ispod cijelog koda sve će biti objašnjeno. Poželjno je da sve unosite sami, ne
copy/paste.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML>
<html>
<head>
<title>Moja prva web stranica - Lako tuts</title>
<meta charset="utf-8"></meta>
<link type="text/css" rel="stylesheet" href="css/style.css" >
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,300,
600&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
</head>
<body>
<!-- Header -->
<header>
<div>
<div>
<img src="images/logo.png" width="138" height="152" alt="Lako Tuts Logo" />
<h1>Lako Tuts</h1>
<img src="images/label.png" width="173" height="102" alt="Lako Tuts Slogan\
" />
Moja prva web stranica
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
54
</div>
<div>
<ul>
<li><a href="#" title="LakoTuts Facebook">Facebook</a></li>
<li><a href="#" title="LakoTuts Twitter">Twitter</a></li>
</ul>
<form action="" method="post">
<input type="text" placeholder="Pretraži" />
<input type="submit">
</form>
</div>
</div>
</header>
<!-- Header END -->
<!-- Sadržaj -->
<section>
<div>
<br/>
</div>
</section>
<!-- Sadržaj END -->
<!-- Footer -->
<footer>
<div>
<br/>
</div>
</footer>
<!-- Footer END-->
</body>
</html>
Objašnjenja:
Head
• < meta charset=”utf-8”></ meta> - Preko ovog charset-a pretraživač može prikazivati slova sa
različitim simbolima kao što je č,š i sl.
• < link type=”text/css” rel=”stylesheet” href=”css/style.css” > - Pozivamo našu CSS datoteku
preko koje ćemo određivati izgled naše web stranice
• < link href=’http://fonts.googleapis.com/css….. - Pozivamo font family sa google-a, u sljedećem
poglavlju bit će objašnjen postupak dobivanja tog css linka
Moja prva web stranica
55
Body
Unutar HTML elementa body unosimo cijeli sadržaj koji se prikazuje na web stranici. HTML
elementom header, koji je HTML5 element, označujemo zaglavlje web stranice. Unutar tog elementa
unosimo sav sadržaj koji će biti predstavljen kao zaglavlje naše web stranice, a to su logo,naslov
web-a, tražilica, social linkovi.
Zatim HTML element div.container označuje jedan element koji objedinjuje cijeli sadržaj i preko
njega ćemo centrirati taj sadržaj tj. postaviti ćemo ga u sredinu web preglednika. Unutar njega
imamo 2 HTML elementa left i right koji označuju lijevi i desni dio header-a, u lijevi dio ide logo i
naslov web-a, dok u desni dio spada tražilica i social linkovi. To smo napravili kako bi lakše upravljali
položajem tih sadržaja. U lijevom sadržaju, unutar HTML elementa div.left zatim smo dodali logo
u obliku HTML elementa img čiji atribut src pokazuje našu izrezanu sliku logo-a. Naslov weba stavljen je pod heading element h1, te “tablica” Može Svatko je isto tako stavljena pod HTML
element img. Svaki img element ima definirane atribute alt,width,height i class.
U desnom sadržaju unijeli smo zatim, unutar div.right, social linkove i tražilicu. Social linkove stavili
smo u element liste ul čiji itemi (eng. list item) li sadrže poveznice na social stranice. Tražilicu
smo stavili pod HTML element form sa 2 elementa input gdje jedan označuje unos sadržaja koji
pretražujemo a drugi gumb čijim klikom pretražujemo. Atribut forme action označuje stranicu na
koju idemo pretraživati, ukoliko nije unesena gleda se stranica na kojoj se forma nalazi, atribut
method označuje metodu kojom se pravi HTTP zahtjev te to mogu biti “POST” ili “GET”. HTML
elementi section,main i footer označuju glavni sadržaj web-a i footer web-a gdje prema ovom dizajnu
ide samo informacije za copyright.
Ta dva dijela nećemo proći u sljedećem tutorijalu već u narednim tutorijalima koji dolaze, pa za
početak dana je samo struktura sa headerom. Može se primijetiti da svaki od tih HTML elemenata
imaju isto div.container koji centriraju sam sadržaj. Ukoliko ste kopirali cijeli html ili unijeli sami
trebali bi dobiti sljedeće:
56
Moja prva web stranica
Početna struktura bez CSS
U dizajnu koristio se font ‘Open Sans’ i to više verzija : semi bold, light i light italic. Google fontovi
se pretražuju na http://www.google.com/fonts⁸. Sa iste stranicu se mogu preuzeti fontovi ili dobiti
podaci kako koristiti fontove na našoj web stranici. Kada ste došli na tu stranici, u tražilicu upišite
Open Sans. Prvi po redu je font koji mi koristimo.
⁸http://www.google.com/fonts
57
Moja prva web stranica
Google Font
Sada uz prvi font uz desni kraj postoji par opcija koja se mogu odabrati za pojedini font.
Font Opcije
Nama je potreban Quick Use, to je opcija u sredini između tri sivih opcija. Kada kliknemo na to, doći
ćemo na stranicu za odabir raznih opcija za taj font. Prvo što nam se nudi je odabir svih font-style-a.
Nama su potrebni samo Light, Light Italic i Semi-Bold.
58
Moja prva web stranica
Font Styles
59
Moja prva web stranica
Sljedeće što nam je za odabrati je opcije za karaktere fonta odnosno za slova. Kako mi koristimo i
posebne znakove odnosno č,š,ć i sl. moramo uzeti proširenu verziju fontu, a to je uz Latin i Latin
Extended.
Extended Font
Nakon toga nude nam se različite opcije odabira za prikaz font-a na našoj web stranici. Mi u ovom
slučaju koristimo prvu opciju.
Font css
PSD2HTML - Header
U prošlom tutorijalu upoznali smo se sa strukturom i google fontovima. U ovome tutorijalu napraviti
ćemo header naše web stranice putem html-a i css-a.
60
Moja prva web stranica
header
Header
Sljedeći dio koda predstavlja strukturu header-a. Cjelovitu početnu strukturu možete vidjeti u
PSD2HTML - Početna struktura⁹ ili u istoimenom poglavlju u knjizi.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
<!-- Header -->
<header>
<div class="container">
<div class="left">
<img src="images/logo.png" width="138" height="152" class="logo"
alt="Lako Tuts Logo" />
<h1 class="headline">Lako Tuts</h1>
<img src="images/label.png" width="173" class="label" height="102"
alt="Lako Tuts Slogan" />
</div>
<div class="right">
<ul class="social">
<li class="prvi"><a href="#" title="LakoTuts Facebook" class="facebook">
Facebook</a></li>
<li><a href="#" title="LakoTuts Twitter" class="twitter">
Twitter</a></li>
</ul>
<form action="" class="search" method="post">
<input type="text" placeholder="Pretraži" class="input" />
<input type="submit" class="submit">
</form>
</div>
</div>
⁹http://www.lakotuts.com/psd2html-pocetna-struktura/
Moja prva web stranica
26
27
61
</header>
<!-- Header END -->
CSS
Kada smo dodali Open Sans u naš projekt možemo početi raditi na našem CSS-u i izgledu sadržaja.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*********
Lako Tuts CSS
***********/
@import url('reset.css');
/* LAYOUT s*/
html {
font-family: 'Open Sans', Arial, Helvetica, sans-serif;
height:100%;
}
body{
background:#30394f;
min-height: 100%;
margin:0;
line-height: 1.4;
}
.main, footer {background:#ede8df;}
.main {min-height: 400px;}
Na HTML element html dodali smo font-family kako bi se na svim ostalim elementima, ukoliko
nemaju definiran font-family, primijenio ovaj font-family. Tako ne moramo za svaki poseban
element nanovo definirati font-family. Dodano je i svojstvo height:100% kako bi se zauzela visina
cijelog pretraživača. Na HTML elementu _body _dodana je pozadina tamno plave boje koja je i
namještena dizajnom.
Namješten je i min-height kako bi sigurno body zauzeo visinu cijelog pretraživača, a ako ima i
više sadržaja onda se visina tog elementa još nadopunjuje. Postavljena je margin:0 zbog reset.css
koji je nadodao body-u margine sa strane. Time smo namjestili da body zauzima i potpunu širinu
pretraživača. Line-height je namješten na 1.4 što znači da ukoliko je font-size:16, line-height će biti
cca 22px. Inače se uzima line-height između 1.4 i 1.6 za najbolju čitljivost. Zatim smo definirali i
sadržaj koji nećemo dalje raditi u ovome tutorijalu.
Elementima .main i footer dodali smo pozadinu kao što je i po dizajnu, te smo .main elementu dodali
i neku minimalnu visinu kako bi mogli vidjeti kako će to izgledati. Ako pomnije pogledate footer,
koji ima istu pozadinu kao i .main, nije na dnu pretraživača već dolazi odmah iza main-a.
Moja prva web stranica
62
Postavimo footer na dno pretraživača.
Kako bi postavili footer na dno, moramo imati neki relativni element na koji bi se footer odnosio.
U ovome slučaju, to je body. Ako njega definiramo kao relativni element, tada footer možemo
apsolutno namjestiti s obzirom na body. Sada u body dodajemo position:relative, a za footer
napišemo sljedeće:
1
2
3
4
5
footer {
width:100%;
position: absolute;
bottom:0;
}
Time smo rekli footeru da uvijek bude na dnu, s obzirom na body. I kako preko position:absolute,
footer gubi cijelu širinu, dodali smo definiciju širine koja zauzima cijelu širinu pretraživača.
Centriranje
Sada kada smo definirali generalni layout header, main i footer, trebamo centrirati sadržaj. Dodajmo
sljedeći dio u CSS.
1
2
3
4
.container {
width:960px;
margin:0 auto;
}
Osvježite pretraživač (F5 - refresh, reload) i pogledajte promjenu. Iako sadržaj ne izgleda centrirano,
njegov block u kojem se sadrži je centriran. Ono što smo sada učinili je da smo elementu .container
definirali širinu od 960px i postavili ga u sredinu pretraživača.
63
Moja prva web stranica
container
Left i Right
Ok, sada smo centrirali sadržaj. Nakon toga potrebno je razmijestiti elemente pa sada dolaze na red
klase .left i .right koje smo uveli u header.
1
2
3
4
5
6
7
8
9
10
11
/* HEADER */
header .container > .left {
width:595px;
float:left;
}
header .container > .right {
width:365px;
float:left;
}
Sljedeća deklaracija header .container > .right /.left predstavlja:
• gledaj .left ili .right koji je baš nivo ispod container tj. nalazi se točno unutar .container ( ne
unutar div.element koji je unutar .container)
• gledaj .container koji se nalazi negdje unutar header elementa.
64
Moja prva web stranica
To znači da ukoliko imamo
1
2
3
4
5
6
7
<header>
<div class="container">
<div class="element">
<div class="left"></div>
</div>
</div>
</header>
Ovdje će element .left poprimiti svojstva jer još je jedan nivo ispod container tj. nije direktno ispod
containera. Gornjim CSS definicijama odredili smo širinu elemenata i dodali im svojstvo float:left
tako da se pripijaju jedan uz drugog slijeva. Kako su zbog float, pozicionirali se ulijevo, cijeli sadržaj
sada se “obavija” oko tih elemenata pa smo dobili sljedeći izgled:
floatano
Tu možemo vidjeti kako su se .main i footer “obavili” oko header sadržaja jer je cijeli sadržaj
pozicioniran sa “floatom”. To znači da moramo nakon header brisati floatove. To ćemo učiniti na
sljedeći način:
Moja prva web stranica
1
2
3
4
5
65
.container::after {
content: '';
display:block;
clear:both;
}
Time smo rekli pretraživaču da kod svakog elementa sa klasom container očisti floatove i time se
prebacuje sadržaj u “novi red”. Što se tu zapravo događa je da se preko pseudo-klase ::after, elementu
.container kaže da nakon njega dolazi jedan block sa praznim sadržajem koji čisti floatove. Time se
ne zauzima mjesto na web stranici i očistimo utjecaj floatova na sljedeći sadržaj.
Logo
Prema dizajnu možemo vidjeti da se logo pozicionira ulijevo od teksta.
1
2
3
4
5
6
7
8
.logo {
float:left;
margin-left:24px;
margin-right:24px;
margin-top:60px;
margin-bottom:-10px;
display:block;
}
Sljedećim CSS-om pozicionirali smo logo ulijevo od teksta te ga pomakli od sadržaja preko margina.
Dodali smo mu i display:block iz razloga što je img po defaultu inline element. Kako bi floatovi i
margine mogli utjecati na logo, morali smo ga deklarirati kao block element.
Naslov weba
Sljedeći korak je pozicionirati naslov weba i promijeniti mu izgled.
1
2
3
4
5
6
7
.headline {
color:#6aceeb;
text-transform: uppercase;
margin-top:120px;
font-weight: 600;
font-size:48px;
margin-bottom:0;}
Gornja CSS svojstva mijenjaju boju teksta i postavljaju sva slova u štampana slova. Zatim ga pomiču
prema dolje za 120px (margin-top) što je duplo više od logo-a kako bi došao na otprilike sredinu slike
našeg logoa. Kako ne bi pomicao sadržaj ispod njega, odredili smo margin-bottom na nulu jer zbog
66
Moja prva web stranica
reset.css je element h1 dobio određeni margin-bottom. Font-weight je postavljen na 600 kako bi
odgovarao semi-bold stilu od fonta. Sada bi to trebalo ovako izgledati:
csslogoH1
Prema dizajnu ovaj naš label “Može Svatko” se sakrije iza glavnog sadržaja. Kako bi to bilo
moguće moramo upotrijebiti z-index te pozicioniranje. Kako je label unutar .left klase, moramo
ga pozicionirati apsolutno s obzirom na .left. Klasa .left nam dobija position:relative.
1
2
3
4
5
header .container > .left {
width:595px;
float:left;
position: relative;
}
A label nam dobiva sljedeće:
Moja prva web stranica
1
2
3
4
5
6
7
8
67
img.label {
clear:both;
bottom: -55px;
left: 350px;
position: absolute;
z-index: -1;
}
Time se gubi njegov utjecaj na raspored sadržaja, a preko z-index koji je -1, prikazuje se iza glavnog
sadržaja jer sam sadržaj po defaultu ima z-index:0. Sa deklaracijama left i bottom pomaknuli smo ga
350px od lijeve strane klase .left i 55px ispod klase .left (To se sve događa, kao što možete primijetiti,
s obzirom na klasu .left). Probajte maknuti od .left svojstvo position pa pogledajte što ćete onda
dobiti.
Pozicionirajmo search i social linkove
Sljedeći korak je srediti desni dio header. Prvo što je potrebno je pozicioniranje samih linkova i
search forme.
1
2
3
4
5
6
7
8
9
10
11
ul.social {
margin-top:60px;
float:right;
}
.search {
clear:both;
float: right;
display:block;
}
Listu linkova pomičemo za 60px prema dolje kao i logo. Time su linkovi u razini sa logo-om.
Pozicionirali smo ih skroz desno, a zatim sa .search očistili njihov daljnji utjecaj sa floatom. Zatim
smo i search-u dali float:right kako bi ga skroz desno pozicionirali.
68
Moja prva web stranica
desniDio
Uredimo Social Linkove!
Sada kada smo pozicionirali naše elemente vrijeme je da ih i uredimo. Prvo ćemo urediti social
linkove.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.social li {
display:block;
width:28px;
float:left;
}
.social .prvi {
margin-right:40px;
}
.social a {
color:#fff;
text-decoration: none;
text-indent: -9999px;
display:block;
width:28px;
height:28px;
}
.social a.facebook {
69
Moja prva web stranica
18
19
20
21
22
background:url('../images/facebook.png') left center no-repeat;
}
.social a.twitter {
background:url('../images/twitter.png') left center no-repeat;
}
Na početku definiramo izgled list elemenata tako da ih postavljamo kao block elemente, floatamo
ih ulijevo tako da budu jedni na drugima slijeva i definiramo širinu svakog elementa koja je 28px a
to je određeno našim sličicama od facebooka i twittera. .social .prvi označuje prvog elementa u listi
jer smo na prvi element postavili tu klasu kako bi drugi element odmaknuli od njega za 40px kao
što je i u dizajnu. .social a označuje sve linkove u listi.
Postavljamo im boju te ih definiramo kao block element kako bi mogli definirati njegovu visinu i
širinu. Ono što je ovdje bitno je text-indent, kojeg smo postavili na -99999px kako bi ga maknuli i
kako bi ostala samo slika koju ćemo postaviti. .social a.facebook/twitter postavljaju sliku za svaki
link. Postavljamo sliku kao background image koji se ne ponavlja te se centrira po Y koordinati (gore
i dolje).
socailLinks
Lijepi search
Preostao nam je još doraditi izgled search-a. Treba nadopuniti našu klasu .search sljedećim:
Moja prva web stranica
1
2
3
4
5
6
7
8
9
10
11
12
13
70
.search {
clear:both;
float: right;
display:block;
width:263px;
height:35px;
background-color:#ede8df;
border:1px solid #fff;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
}
Dodana mu je širina i visina, boja te rubovi. Sa zadnjim svojstvima definirali smo i zaobljenje ruba, a
prefiski -moz i -webkit označuju pretraživače firefox i safari/chrome. To su dodatne specifikacije koje
se dodaju iz sigurnosti iako za neka svojstva danas to više nije ni potrebno, ukoliko gledamo stranicu
sa najnovijim verzijama pretraživača. Ali ovo omogućuje i zaobljenje na starijim pretraživačima u
čije vrijeme još border-radius nije bio priznat od w3c. Sada smo definirali samo izgled forme ali ne
i dva unutarnja elementa.
1
2
3
4
5
6
7
8
9
10
11
12
.search .submit {
display:block;
width:17px;
height:17px;
float:right;
text-indent: -9999px;
background: url('../images/search.png') center center no-repeat;
border:none;
margin-top:8px;
margin-right:10px;
cursor: pointer;
}
Gornji CSS definira izgled search gumba kojemu postavljamo dimenzije kakve ima search.png.
Pozicioniramo ga skroz udesno i dodajemo mali razmak između njega i ruba forme sa margin-right.
Tu je isto tako iskorišten text-indent kako bi se maknuo tekst i ostala samo slika gumba. Dodano je
i svojstvo cursor:pointer koji mijenja izgled našeg miša kada prođemo preko gumba.
71
Moja prva web stranica
1
2
3
4
5
6
7
8
9
10
.search .input {
background:none;
border:none;
height:30px;
font-style: italic;
font-size:18px;
padding-left: 10px;
font-family: 'Open Sans', Arial, Helvetica, sans-serif;
width:80%;
}
Element sa klasom .input definiran je gornjim CSS svojstvima. Prvo mu mičemo boju pozadine
i rubove koje su dane od pretraživača. Nakon toga definiramo mu visinu, širinu i ostala, već
objašnjena, svojstva.
sredenSearch
Dorade
Prema dizajnu možemo primijetiti da je početni tekst unutar search forme slabije boje. To je boja
HTML5 atributa placeholder te njemu izgled mijenjamo sljedećim CSS kodom:
72
Moja prva web stranica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.search .input::-webkit-input-placeholder {
color: #bdbdbd;
}
.search .input:-moz-placeholder { /* Firefox 18- */
color: #bdbdbd;
}
.search .input::-moz-placeholder {
color: #bdbdbd;
}
/* Firefox 19+ */
.search .input:-ms-input-placeholder {
color: #bdbdbd;
}
Sljedeća dorada koju ćemo napraviti je pomicanje labele “Može Svatko” jer ovako sakrivena ne daje
nikakve informacije, a da tako i ostane nam ne služi baš na našoj stranici. Dakle kako bi to mogli
učiniti napraviti ćemo sljedeće. Dodajemo prvo na općenitu deklaraciju labele svojstva transition.
Sada bi naša definicija labele trebala ovako izgledati:
1
2
3
4
5
6
7
8
9
10
img.label {
clear:both;
bottom: -55px;
left: 350px;
position: absolute;
z-index: -1;
transition: bottom 1s;
-webkit-transition: bottom 1s; /* Safari */
}
Iako se sada ništa ne događa jer nema događaja koji će pokrenuti transition. On se uključuje na
pojedinim događajima koja se događaju na tom elementu. Mi ćemo napraviti da se malo podigne
kada prelazimo mišem preko .left klase. To ćemo postići sljedećim CSS svojstvom:
1
2
3
header .container > .left:hover img.label {
bottom:-25px;
}
Sada kada prelazimo mišem preko klase .left, naš label dobiva drugačiji bottom, odnosno veće za
30px (jer ide od - prema + ) pa se tako i njegova pozicija povisuje.
73
Moja prva web stranica
PSD2HTML - Gornji sadržaj
U prošlom tutorijalu napravili smo header naše prve web stranice. Sada je na redu glavni sadržaj.
U ovome tutorijalu napraviti ćemo gornji glavni sadržaj gdje se nalazi poruka dobrodošlice i slider.
Prvo što je potrebno spremiti sliku za naš slider i definirati strukturu našeg gornjeg sadržaja, zatim
ga je potrebno urediti CSS-om.
Priprema slike
Sliku spremamo na jednak način kao što smo i rezali naš dizajn. Ovdje ću prikazati još jednom, na
malo drugačiji način, kako doći do naše slike. Prvo što je potrebno napraviti je stvoriti novi Layer i
Apply Image.
Apply Image
74
Moja prva web stranica
Nakon toga potrebno je odabrati našu sliku. Mali problem nastaje prilikom odabira slike jer je
prikazana slika na slideru samo dio jedne veće slike tako da moramo odabrati samo dio koji ide
kao naš slider. U narednih par slika prikazati će se način kako doći do odabira samo potrebnog dijela
slike. Prvo je potrebno odabrati našu sliku. To činimo tako da kliknemo na Layer koji sadrži sliku.
logoSelected
Zatim držeći D i klikom miša na oblik odnosno shape našeg slidera (elementa u kojemu se nalazi
naša slika) stvara se odabir slike. Na sljedećoj slici prikazano je područje gdje je potrebno kliknuti
kako bi se slika odabrala.
75
Moja prva web stranica
Dctrl
Odabrana slika
Nakon toga, dovoljno je CTRL/Command + C i otvoriti novi File, zalijepiti je tamo i spremiti. Ja ću
76
Moja prva web stranica
je nazvati slika spremiti je u početni folder naše prve web stranice.
Folder
Struktura gornjeg sadržaja
Struktura našeg gornjeg sadržaja sastojati će se od lijeve i desne strane koje će sadržavati slider i
poruku. Slider će zatim imati jedan container koji će u sebi sadržavati elemente slidera odnosno slike
sa tekstom.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!-- Sadržaj -->
<section class="main">
<div class="container">
<div class="left">
<div class="slider">
<div class="slider_item">
<img src="slika.jpg" width="326" height="188" alt="Slika" />
<span class="opis">
<h1>Moj prvi projekt</h1>
<p>Kratki tekst o mojem projektu</p>
</span>
</div>
<div class="slider_item">
<img src="slika.jpg" width="326" height="188" alt="Slika" />
<span class="opis">
<h1>Moj drugi projekt</h1>
</span>
</div>
</div>
</div>
<div class="right">
<h1>Dobrodošli na moju prvu web stranicu!</h1>
<p>Lorem Ipsum je jednostavno probni tekst koji se koristi u tiskarskoj i slov\
oslagarskoj industriji. Lorem Ipsum postoji kao industrijski standard još od 16-\
Moja prva web stranica
26
27
28
29
30
31
32
33
34
35
77
og stoljeća.</p>
<div class="meta">
<span class="email">john@doe.com</span>
<span class="adresa">Adresa 1, LakoTuts 45399</span>
</div>
</div>
<br/>
</div>
</section>
<!-- Sadržaj END -->
Možete primijetiti kako za slider koristimo istu sliku. Stavio sam drugačiji tekst kako bi prepoznali
kada slider mijenja svoj sadržaj. U jednoj pravoj web stranici koristile bi se i druge slike.
CSS
Sada kada naša stranica ima potrebnu strukturu, moramo preko CSS-a definirati izgled našeg gornjeg
glavnog sadržaja. Prvo je potrebno odmaknuti malo naš sadržaj od logoa i gornjeg teksta kao što je
predviđeno dizajnom. To ćemo učiniti tako da odemo u naš CSS i klasi .main pridodamo sljedeće:
1
.main {min-height: 400px;padding-top:40px;}
Zatim je potrebno odmaknuti lijevi i desno dio sadržaja.
1
2
3
4
5
6
7
8
9
10
/* Main */
.main .left {
width:380px;
float:left;
}
.main .right {
width:580px;
float:left;
}
Ovime smo dobili sljedeće:
78
Moja prva web stranica
Lijevi i desni sadržaj
Poruka dobrodošlice
Poruku dobrodošlice je potrebno namjestiti u light font i crvene boje. Također promijeniti i veličinu
fonta.
1
2
3
4
5
6
.main .right > h1 {
font-weight:300;
font-size:30px;
color:#ff434c;
margin:0;
}
Ovdje je isto tako primjenjen i margin koji brišemo sa vrijednosti 0 kako bi maknuli dobivene
margine iz reset.css.
Moja prva web stranica
79
Tekst dobrodošlice
Tekst je isto tako potrebno namjestiti u light font te namjestiti dobar i čitljivi line-height.
1
2
3
4
5
6
7
8
.main .right > p {
font-weight:300;
font-size:14px;
line-height:1.6;
width:80%;
text-align:justify;
}
Kako prema dizajnu možemo primijetiti kako je širina teksta manja od širine naslova, dodali smo
i width koji je jednak 80% širini elementa u kojem se nalazi, a to je 80% širine od elementa .right.
Nakon toga smo mu i poravnanje namjestili tako da je jednako i s lijeve i s desne stranice.
Meta podaci
Meta podatke prvo moramo malo pomaknuti od teksta.
1
.main .right > .meta {
font-weight:300;
1
2
3
font-size:12px;
margin-top:50px;
}
Ovime smo i namjestili veličinu fonta za cijeli tekst unutar klase meta.
Email
1
2
3
4
5
.meta > .email {
background:url('../images/email.png') no-repeat left center;
padding-left:40px;
}
Za email ovdje smo dodali pozadinsku sliku koja se ne ponavlja tako da se prikaže samo jedanput
te smo zatim tekst unutar elementa .email postavili 40px udesno. Time smo dobili dovoljan razmak
kao što je prikazan u dizajnu.
Adresa
Za adresu možemo to kopirati i promijeniti putanju slike.
80
Moja prva web stranica
1
2
3
4
5
.meta > .adresa {
background:url('../images/adresa.png') no-repeat left center;
padding-left:40px;
margin-left:50px;
}
Ovdje smo još dodali i pomicanje udesno za 50px preko margin-left. Time smo dobili željeni izgled
kao što je u dizajnu. Sada bi naša stranica trebala izgledati ovako:
Izgled teksta dobrodošlice
Slider
Sada kada je riješen desni dio sadržaja, možemo preći na naš slider.
Moja prva web stranica
1
2
3
4
5
6
7
81
.slider {
border:1px solid white;
width:326px;
height:188px;
margin:0 auto;
position:relative;
}
Ovime smo slider postavili na sredinu te smo mu odredili širinu i visinu prema dimenzijama slike.
Na kraju njegov position je postavljen na relative kako bi mogli elemente slidera postaviti s obzirom
na njega.
1
.slider_item {
position:absolute;
1
2
3
top:0;
left:0;
}
Zatim smo element slidera postavili gore lijevo sa position:absolute kako bi uvijek počinjao u istom
položaju naspram našeg slidera.
1
2
3
4
5
6
7
8
9
.slider_item .opis{
position:absolute;
bottom:0;
left:0;
width:100%;
background:rgba(0, 0, 0, 0.1);
height:77px;
}
Kako bi bili sigurni da će naš opis uvijek biti na istome mjestu i iste veličine dodali dali smo i njemu
position:absolute te smo mu odredili da počinje dolje lijevo. Sa gornjom definicijom background
svojstva dali smo mu crnu pozadinu ali sa opacity postavljenim na 10%.
Moja prva web stranica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
82
.slider_item .opis h1{
font-size:18px;
margin-bottom:0;
margin-top:10px;
font-weight:300;
font-style:italic;
color:#ff434c;
margin-left:10px;
}
.slider_item .opis p{
font-size:12px;
margin:0;
margin-left:10px;
font-weight:bold;
}
Gornje definicije CSS-a su već viđene pa ih nećemo dodatno objašnjavati. Proučite ih dok ih pišete
kako bi vidjeli njihova svojstva.
Slider Navigacija
Navigacija nije bila dodana u gornjoj strukturi pa je moramo sada dodati.
1
2
3
4
5
6
7
....
<div clasS="navigacija">
<a href="#" class="nav active">1</a>
<a href="#" class="nav">2</a>
</div>
</div>
<div class="right">
Navigaciju smo dodali na kraju elementa .left. Sada ju je potrebno samo još urediti preko CSS-a.
Moja prva web stranica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
83
.left .navigacija {
width:40px;
margin:9px auto;
text-align:center;
}
.navigacija .nav {
text-indent:-9999px;
background:url('../images/slider.png') no-repeat left center;
display:block;
width:11px;
height:11px;
float:left;
margin-left:4px;
margin-right:4px;
}
.navigacija .nav.active {
background:url('../images/sliderCurrent.png') no-repeat left center;
}
Definirali smo navigaciji širinu i postavili je u sredinu te odmaknuli od vrha za 9px. Zatim smo
elementima navigacije dali klasičnu sličicu slider navigacije, odredili dimenzije i naravno stavili
kao display:block kako bi element poprimio te dimenzije, te sa float:left smo odredili da idu jedan uz
drugog. Odmaknuli smo ih nakon toga preko margin-a. Kako bi mogli vidjeti koji je slider aktivan
morali smo dodati u jedan element i klasu active preko koje se raspoznaje u navigaciji koji je element
aktivan. Zatim smo u css-u izmijenili pozadinsku sliku.
PSD2HTML - Slider
Gornji dio sadržaja je skoro pa gotov. Nedostaje nam samo funkcionalni slider. U ovome tutorijalu
napraviti ćemo slider pomoću jquery plugin-a.
jQuery
jQuery je javascript biblioteka što znači da funkcije koje izvršava jQuery rade preko javascripta.
jQuery nam omogućuje da u kraćem roku obavimo više stvari odnosno da jednom funkcijom
dobijemo ono što bi napravili sa nekoliko funkcija koristeći se čistim javascriptom. jQuery biblioteku
možete pogledati na www.jquery.com¹⁰. Plugin koji ćemo koristiti ovisi o jQuery jer koristi
¹⁰http://www.jquery.com
84
Moja prva web stranica
neke njegove funkcije tako da moramo skinuti odnosno koristiti jQuery kako bi i jQuery plugin
mogao raditi. Kako bi došli do jQuery-a potrebno je otići na download sekciju koja se nalazi na
www.jquery.com/download¹¹. Na ovoj stranici možete skinuti cijeli kod od jQuery-a. Za svrhu ovog
tutorijala ja ću koristiti CDN (Content Delivery/Distribution Network), a to mi omogućuje korištenje
jQuery-a iako nije na mojem serveru već njegov kod preuzimam sa neke druge stranice. To možete
pronaći ako malo scrollate prema dolje u download sekciji.
jQuery CDN
Koristiti ćemo gornji poziv skripte. Tako da na kraju naše HTML datoteke možete zalijepiti taj kod.
1
2
3
4
</footer>
<!-- Footer END-->
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
</body>
jCarousel
jCarousel je plugin koji koristi jQuery funkcije te ga možete pronaći na stranici orgalla.com/jcarousel/¹².
Ja sam pronašao taj plugin tako da sam pretražio katalog plugina na stranici plugins.jquery.com.
¹³Link če vas odvesti na pretraživanje slider-a. Tamo u listi možete pronaći i jCarousel. Zatim sam
na stranici jCarousel-a kliknuo na DOWNLOAD i kopirao sam cijeli kod koji mi je dan u pretraživaču,
otvorio sam novu datoteku u mojem alatu za izradu web projekata i zalijepio taj kod u tu datoteku
te je nazvao carousel.js i spremio je u folder js. Sada kako bi saznao kako se koristiti tim plugin-om
otvorio sam stranicu _DOCUMENTATION¹⁴ _i kliknuo na Instal__lation. ¹⁵.
Ovdje sam proučio osnove pozivanja samog plugin-a te kako ga pozivam u HTML datoteci odnosno
kako ga pokrećem. Prvo što je potrebno je pozvati samu datoteku koja nam sadrži kod od jCarousel-a.
To je naša datoteka carousel.js. Nju pozivam ispod poziva jQuery-a.
¹¹http://jquery.com/download/
¹²http://sorgalla.com/jcarousel/
¹³http://plugins.jquery.com/tag/slider/
¹⁴http://sorgalla.com/jcarousel/docs/
¹⁵http://sorgalla.com/jcarousel/docs/reference/installation.html
85
Moja prva web stranica
Poziva se nakon jQuery-a jer koristi funkcije od jQuery-a.
Ukoliko se pozove prije, pozvati će se funkcije koje su definirane u jQuery-a, a one će se definirati
tek nakon jCarousel, pa naš plugin i slider neće raditi.
1
2
3
4
5
6
</footer>
<!-- Footer END-->
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="js/carousel.js"></script>
</body>
Čitajući dalje vidio sam kako se rade slideri odnosno naši .slider_item-i.
jCarousel
Saznajemo iz ove dokumentacije da možemo postaviti bilo što unutar slidera i on će to vrtiti. Odlično,
to nama i treba. Ali zapazimo još nešto. Svi itemi koji se vrte moraju biti unutar jednog dodatnog
container-a. Dok mi imamo samo
86
Moja prva web stranica
1
2
3
4
5
6
7
8
9
10
<div class="slider">
<div class="slider_item">
<img src="slika.jpg" width="326" height="188" alt="Slika"
<span class="opis">
<h1>Moj prvi projekt</h1>
<p>Kratki tekst o mojem projektu</p>
</span>
</div>
...
/>
Ukoliko pozivamo jCarousel na .slider, potrebno nam je imati još jedan dodatni container. Naša dva
.slider_item-a dodajemo unutar containera .slides.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="slider">
<div class="slides">
<div class="slider_item">
<img src="slika.jpg" width="326" height="188" alt="Slika"
<span class="opis">
<h1>Moj prvi projekt</h1>
<p>Kratki tekst o mojem projektu</p>
</span>
</div>
<div class="slider_item">
<img src="slika.jpg" width="326" height="188" alt="Slika"
<span class="opis">
<h1>Moj drugi projekt</h1>
/>
/>
</span>
</div>
</div>
</div>
Ukoliko dalje čitamo, naići ćemo na poglavlje Setup gdje se prikazuje poziv plugin-a. Kako bi to
mogli napraviti, a da ne pretrpamo naš HTML dokument, ja ću to napraviti u zasebnoj datoteci koju
ću nazvati main.js i spremiti je i folder js. Ona će sadržavati sljedeće:
Moja prva web stranica
1
2
3
4
5
87
$(document).ready(function(){
$('.slider').jcarousel();
});
Prva linija pokazuje pretraživaču da nakon što se sve učita na našoj stranici, tek onda može učitati
ovaj dio skripte tj. riječima napisanih u kodu: “Kada je dokument spreman (sve je učitano) onda
čitaj i izršavaj ono što se nalazi u ovoj funkciji).”. Dalje pozivamo naš plugin na elementu sa klasom
.slider. Datoteku main.js potrebno je pozvati u našoj HTML datoteci i to ispod poziva carousel.js
jer su neke od funkcija u main.js ovisne o funkcijama definiranim u carousel.js. Kako je naš CSS
drugačije posložen i nije podložan promjenama koje vrši plugin na našem dokumentu, potrebno ga
je promijeniti.
Zašto nije podložan?
Nije podložan iz razloga što smo naše .slider_item elemente pozicionirali apsolutno s obzirom na
.slider i time su se poredali jedan item na drugi te se ne izmjenjuju. Ovaj plugin zahtjeva da su itemi
poredani jedan uz drugog (prisjetite se float-a). Dakle čitajući dalje dokument dolazimo do poglavlja
Style the carousel U sadržaju ovog poglavlja objašnjeno je kako definirati CSS svojstva za elemente
slidera.
Na njihovoj stranici to je urađeno za HTML elemente ul, dok ćemo mi morati to raditi za naše
elemente koji su div. To je zapravo nebitno jer ćemo ih ciljati preko klasa, tako da su to i ul odnosno
li elementi ne bi pravilo neku razliku. Ajmo sada u koracima sređivati naš CSS.
Prvo ćemo prikazati njihov CSS na stranici te onda naš.
Njihov slider element
1
2
3
4
5
6
7
8
9
10
/*
This is the visible area of you carousel.
Set a width here to define how much items are visible.
The width can be either fixed in px or flexible in %.
Position must be relative!
*/
.jcarousel {
position: relative;
overflow: hidden;
}
Naš slider element
Moja prva web stranica
1
2
3
4
5
6
7
8
88
.slider {
border:1px solid white;
width:326px;
height:188px;
margin:0 auto;
position:relative;
overflow:hidden;
}
Promjene: Dodali smo overflow svojstvo sa vrijednosti hidden kako bi se prikazivao samo sadržaj
unutar ovih definiranih dimenzija dok bi ostali sadržaj bio sakriven. Možete primijetiti da piše kako
ovaj element mora biti sa position:relative tako da je to dobro što smo napravili već prije :)
Njihov slider container element
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*
This is the container of the carousel items.
You must ensure that the position is relative or absolute and
that the width is big enough to contain all items.
*/
.jcarousel ul {
width: 20000em;
position: relative;
/* Optional, required in this case since it's a <ul> element */
list-style: none;
margin: 0;
padding: 0;
}
Naš slider container element
1
2
3
4
.slides {
width:700px;
position: relative;
}
Promjene: Dodali smo novi dio u naš CSS, a to je .slides koji predstavlja naš container te smo mu
dodali position:relative i širinu od 700px zato jer ukoliko pročitate njihov komentar u CSS-u, širina
bi trebala biti dovoljno velika da stane cijeli sadržaj u njih. Kako mi imamo dva sadržaja od 326px,
iako ih nismo definirali direktno u CSS slika je te širine te ona definira i širinu elementa koji ju
sadržava, 326*2 je 652 ako se ne varam te sam ja ovako bez računanja stavio 700px kako bih bio
Moja prva web stranica
89
siguran. Bolje je postaviti točnu širinu, tako da vi nemojte učinite moju pogrešku nego isprobajte sa
manjom širinom to namjestiti :)
Njihov slider item element
1
2
3
4
5
6
7
8
/*
These are the item elements. jCarousel works best, if the items
have a fixed width and height (but it's not required).
*/
.jcarousel li {
/* Required only for block elements like <li>'s */
float: left;
}
Naš slider item element
1
2
3
4
.slider_item {
float:left;
position: relative;
}
Promjena: Izbrisali smo mu apsolutnu poziciju i smještaj tj. obrisali smo position,top _i _left te
smo mu dodali float:left kako bi jedni uz druge prijanjali tj. naslanjali se jedni na druge, te smo
mu dodali i position:relative. Taj position nema veze sa sliderom već ima veze sa našim drugim
CSS-om. Naš element .opis u .slider_item pozicionira se apsolutno prema prvom elementu koji ima
position:relative. Zbog toga smo dodali position:relative na naš slider_item kako ne bi .opis gledao
na neki drugi element i krivo se pozicionirao.
Slider Navigacija
Kako bi saznao kako aktivirati paginaciju otišao sam ponovo na dokumentaciju i odabrao Pagination.
Tu sam saznao da možemo jednostavno pozvati paginaciju sa jcarouselPagination(). Tako da je
dovoljno odabrati element koji je naša navigacija za slider i pozvati tu metodu.
Moja prva web stranica
1
2
3
4
5
6
7
90
$(document).ready(function(){
$('.slider').jcarousel();
$('.navigacija').jcarouselPagination();
});
Sada možemo primijetiti kako se naša navigacija poremetila odnosno dobili smo brojke 1 i 2 umjesto
naših gumbića. Ono što se dogodilo je to da je plugin našem elementu .navigacija izbrisao sadržaj i
dodao svoj sadržaj čime smo izgubili klase. Dakle kako bi vratili naše gumbiće definirane u CSS-u
potrebno je umjesto .nav napisati a.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.navigacija a {
text-indent:-9999px;
background:url('../images/slider.png') no-repeat left center;
display:block;
width:11px;
height:11px;
float:left;
margin-left:4px;
margin-right:4px;
}
.navigacija a.active {
background:url('../images/sliderCurrent.png') no-repeat left center;
}
Sada se naši gumbići vide i sve je kako i prije.
Ali ne vidi se aktivan slider !?
Da, aktivan slider se ne vidi iz razloga što se ne dodaju klase .active na elemente unutar navigacije.
Kako bi to riješili, moramo otići opet na stranicu jCarousel i to na evente paginacije¹⁶ (Pagination
Plugin -> Events). Ukoliko kliknete na active event poveznica će vas odvesti na dio gdje se prikazuje
poziv evenata odnosno prikazuje se kako definirati događaje koji će se dogoditi nakon što je ovaj
event pozvan. Na toj djelu stranice možete primijetiti sljedeći kod:
¹⁶http://sorgalla.com/jcarousel/docs/plugins/pagination/reference/events.html
Moja prva web stranica
1
2
3
4
5
6
7
91
$('.jcarousel-pagination')
.on('jcarouselpagination:active', 'a', function() {
$(this).addClass('active');
})
.on('jcarouselpagination:inactive', 'a', function() {
$(this).removeClass('active');
});
Gledajući taj kod, implementirano je sljedeće:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(document).ready(function(){
$('.slider').jcarousel();
$('.navigacija')
.on('jcarouselpagination:active', 'a', function() {
$(this).addClass('active');
})
.on('jcarouselpagination:inactive', 'a', function() {
$(this).removeClass('active');
})
.jcarouselPagination();
});
Šta se ovdje dogodilo?
Polako, idemo koracima:
1. Pozivamo plugin jcarousel na .slider
2. Određujemo preko evenata da kada je aktivan element navigacije( element navigacije povezan
je sa slider item-om ) tada tom elementu dodaj klasu active
3. Određujemo kada nije aktivan da mu se briše klasa active
4. Nakon definiranja evenata pozivamo i metodu stvaranja navigacije
PSD2HTML - Donji sadržaj i footer
Ovim tutorijalom završavamo našu web stranicu. Ovdje ćemo naučiti kako napraviti liste te njihov
izgled definirati putem CSS-a.
Struktura
Za početak potrebno je postaviti naš sadržaj i time definirati preostalu strukturu u našoj datoteci
index.html.
Moja prva web stranica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
... <span class="adresa">Adresa 1, LakoTuts 45399</span>
</div>
</div>
<br style="clear:both"/>
<div class="donji_sadrzaj">
<div class="left">
<ul >
<li class="raketa">Lorem Ipsum je jednostavno probni tekst koji se
koristi u tiskarskoj i slovoslagarskoj industriji. Lorem Ipsum
postoji kao industrijski standard još od 16-og stoljeća.
</li>
<li class="code">
Lorem Ipsum je jednostavno probni tekst koji se koristi u tiskarskoj
i slovoslagarskoj industriji. Lorem Ipsum postoji kao industrijski
standard još od 16-og stoljeća.
</li>
</ul>
</div>
<div class="right">
<ul>
<li class="klijenti">
<span class="velika plava">34</span>
Zadovoljnih klijenata
</li>
<li class="projekti">
<span class="velika crvena">10</span>
Otvorenih projekata
</li>
</ul>
</div>
</div>
</div>
</section>
<!-- Sadržaj END -->
<!-- Footer -->
<footer>
<div class="container">
&copy; LakoTuts, 2014
<br/>
</div>
</footer>
<!-- Footer END-->..
92
Moja prva web stranica
93
Neki dijelovi su pušteni i nakon našeg sadržaja kako bi mogli vidjeti gdje se točno nalazi ovaj dio
strukture. Možete prmijetiti kako sadržaj pod elementima .left i .right ipak jesu pomaknuti lijevo i
desno iako mi nismo za njih ništa dodatnog definirali. To je iz razloga što smo u jednom od prošlih
tutorijala deklarirali klase .left i .right i to pod elementom .main. Zbog takve deklaracije svi elementi
sa tim klasama unutar elementa .main poprimaju ta svojstva. U sljedećem kodu prikazane su te
deklaracije:
1
2
3
4
5
6
7
8
9
10
/* Main */
.main .left {
width:380px;
float:left;
}
.main .right {
width:580px;
float:left;
}
Lijevi stupac
Prvo ćemo srediti naš lijevi dio sadržaja te CSS koji ćemo koristiti za početak je sljedeći:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* Donji sadržaj*/
.donji_sadrzaj .left ul {
font-size:12px;
padding-left:25px;
line-height: 1.5;
margin-top:40px;
}
.donji_sadrzaj .left li {
list-style: none;
width:282px;
margin-bottom: 42px;
padding-left:55px/*Širina ikona rakete i code-a + razmak od ikone */;
text-align: justify;
}
Prema gornjem CSS definirali smo izgled naših ul i li elemenata. Na ul definirali smo i padding-left
iz razloga što sam želio definirati zaseban padding-left kako se ne bi koristila deklaracija iz reset.cssa. Kod li elementa deklarirali smo njihovu širinu te zatim dodali i padding-left koji pomiče cijelu tu
Moja prva web stranica
94
širinu za 55px što odgovara širini ikona koje koristimo za lijevi stupac te još dodatan razmak između
ikona i teksta.
Sada treba dodati i ikone
Dodavanje ikona je veoma jednostavno. Pripremili smo već područje gdje ikone dolaze sa definiranjem padding-left na li elementu. Sada je jedino potrebno pozicionirati ikonu skroz lijevo i uz vrh,
a to ćemo učiniti sljedećom CSS deklaracijom.
1
2
3
4
5
6
7
li.raketa {
background:url('../images/raketa.png') no-repeat left top;
}
li.code {
background:url('../images/code.png') no-repeat left top;
}
Desni stupac
Nakon definiranja izgleda lijevog stupca na red dolazi i desni stupac. Za elemente desnog stupca
koristiti ćemo iste metode samo drugačijih vrijednosti uz neke dodatne metode koje će biti
objašnjene. Prve linije css za desni stupac:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.donji_sadrzaj .right ul {
font-size:18px;
padding-left:100px;
line-height: 1.5;
margin-top:40px;
color:#b5aea3;
}
.donji_sadrzaj .right li {
height:80px;
list-style: none;
padding-left:100px;
margin-bottom:20px;
}
Ovdje smo jednako tako koristili svoju definiciju padding-left za ul, a isto i za li element gdje se kod
li elementa računa širina ikona + razmak između ikone i teksta. Visina li elementa isto je tako uzeta
iz dimenzije ikona kako bi se cijele ikone vidjele. Ovim CSS-om sad je definirana pozicija elemenata
i izgled teksta. Sljedeće je dodavanje ikona:
Moja prva web stranica
1
2
3
4
5
6
7
95
li.klijenti {
background:url('../images/klijenti.png') no-repeat left center;
}
li.projekti {
background:url('../images/monitor.png') no-repeat left center;
}
Kao što možete primijetiti ove ikone dodane su na jednak način kao i gornje ali ovdje je pozicija po
Y (gore dolje) koordinatama namještena da se prikazuje u sredini elementa. Ostao nam je još samo
tekst, pa ajmo i to srediti:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.donji_sadrzaj .right .velika {
font-size: 48px;
font-weight: bold;
margin-right: 20px;
}
.donji_sadrzaj .right .plava {
color:#6aceeb;
}
.donji_sadrzaj .right .crvena {
color: #ff434c;
}
Sada naša web stranica izgleda približno jednaka PSD-u ali tekst još uvijek mora biti centriran sa
ikonama kod desnog stupca. Tu ćemo se malo opet poigrati sa floatanjem i sl. Prvo što ćemo učiniti
je da se ostali tekst prikazuje uz naša velika slova pa kod definiranje naših velikih slova postavljamo
float:left.
1
2
3
4
5
6
.donji_sadrzaj .right .velika {
float: left;
font-size: 48px;
font-weight: bold;
margin-right: 20px;
}
Nakon toga potrebno je srediti i čišćenje floata jer će se sada cijeli naredni sadržaj prikazivati uz
velika slova, tako da i sljedeća velika slova se prikazuju uz prethodna velika slova. To ćemo učiniti
tako da u svakom li elementu desnog stupca prvo brišemo odnosno čistimo floatove. Sada CSS od
našeg li elementa desnog stupca treba izgledati ovako:
Moja prva web stranica
1
2
3
4
5
6
7
8
96
.donji_sadrzaj .right li {
height:80px;
clear:both;
list-style: none;
padding-left:100px;
line-height: 80px;
margin-bottom:20px;
}
Ovime čistimo floatove i krećemo iz novog reda za svaki li element, a definiranjem line-height na
80px što je dimenzija visine od naših ikona za desni stupac, postigli smo centriranje teksta uz sliku.
To se dogodila zato jer se sada gleda svaka linija teksta unutar li elementa ima visinu od 80px pa po
tome je i tekst jednako pozicioniran s obzirom na gornju i donju granicu linije te smo time postigli
centriranje teksta.
Footer
Footer je jednostavan. Kako koristimo klasu .container tekst nam je već pozicioniran uz lijevi rub
našeg containera te je jedino potrebno definirati veličinu fonta, a to jednostavno činimo ovako:
1
2
3
4
footer {
font-size:12px;
padding:20px 0;
}
Koristeći se prethodnom definicijom padding-a povećali smo footer gore i dolje za 20px.
Autor
Autor knjige je Igor Benić kojeg možete pronaći na twitteru pod @igorbenic. Također je i autor sva
tri tečaja na www.lakotuts.com gdje snima i piše tutorijale na hrvatskom jeziku.
Savjetovanje i poduke
Za pomoć pri izradi vlastitih web stranica Igor Benić nudi usluge pomoći, podučavanja te savjetovanja pri izradi web stranica. Za više informacija o tome, kontaktirajte ga na e-mail: i.benic@hotmail.com.