Sad ~temo se malo zabaviti time kako
CSS postavlja elemente na stranicu.
Znamo da se blokovski elementi renderiraju odozgo
prema dolje, a linijski slijeva na desno (s prijelazom
u novi red kad treba). Puna istina je da svaki pojedini
element ima pravokutnik u kojem se
nalazi, i ti pravokutnici se sla~zu jedan do drugog
linijski ili blokovski, kako ve~t treba. Taj
sadr~zavaju~ti pravokutnik je zapravo sastavljen od 4
pravokutnika jedan unutar drugog.
Osnovni, najdublji
pravokutnik je s~am sadr~zaj elementa, odnosno
najmanji pravokutnik koji ga sadr~zi (zvat ~temo ga
osnovni pravokutnik). Oko njega su
jo~s tri dodatna prostora, koja se zovu (iznutra prema
van):
Pet je dakle svojstava koja mo~zemo ovdje podesiti:
veli~cina umetka (padding
), debljina
okvira (border-width
), stil linij~a koje
~cine okvir (border-style
), boja okvira
(border-color
), te veli~cina margine
(margin
). "Duljinska" svojstva
(sve osim boje i stila okvira) mo~zemo posebno
podesiti samo na odre~denom rubu, dodav~si iza prve
rije~ci svojstva ime ruba: na primjer,
padding-bottom je visina donjeg umetka,
border-right-width je debljina desnog
ruba okvira, a margin-top je gornja
margina.
Svako od tih 5 svojstava mo~zemo postaviti navode~ti jednu, dvije, tri ili ~cetiri vrijednosti:
(Primijetimo da tako obavezno postavljamo svojstvo na sva ~cetiri ruba, bez obzira koliko vrijednosti naveli. Ako ho~temo postaviti samo neke vrijednosti, a ostale ostaviti nepromijenjenima (naslije~denima), moramo koristiti specifi~cnija svojstva poput padding-right.)
H2 {
padding: 3px;
border-width: 5px;
border-style: double none solid;
}
Ovaj primjer postavlja h2 elemente tako da na
udaljenosti 3 piksela imaju iznad sebe dvostruku
liniiju ukupne debljine 5 piksela, a ispod sebe
jednostruku liniju iste debljine.H1 { border: thick outset #033 }
Postavljanje veli~cine margine. Dok "veli~cina umetka" zaista zna~ci njegovu ~sirinu ili visinu, ovisno o tome je li horizontalan ili vertikalan (mada se u postotcima uvijek postavlja u odnosu na ~sirinu elementa), "veli~cina margine" je druga~cije definirana. Za horizontalne margine (lijevu i desnu), ona stvarno zna~ci njihovu ~sirinu, dok za gornju i donju marginu zna~ci minimalnu udaljenost od (okvira ili pozadine) neposredno prethodnog ili sljede~teg elementa. To zna~ci da, ako su A i B linijski elementi jedan do drugog u liniji, razmak izme~du njih ~te biti zbroj od "margin-right"(A) i "margin-left"(B), no ako su to blokovski elementi jedan ispod drugog, razmak izme~du njih ~te biti maksimum od "margin-bottom"(A) i "margin-top"(B). Na to treba paziti prilikom definicije margin~a: ako vidimo da smanjivanje donje margine nekog elementa ne pomi~ce elemente ispod njega prema gore, mo~zda je kriva gornja margina elementa neposredno ispod.
Tako~der, veli~cina margine mo~ze biti i negativna: na taj na~cin mo~zemo posti~ti preklapanje pojedinih pravokutnika u nekim slu~cajevima. Ovo svojstvo nije ba~s besprijekorno implementirano na mnogim dana~snjim browserima.
Vrijednost auto zna~ci da se vrijednost te margine treba automatski podesiti. Stvar je u tome da nemamo ba~s toliko stupnjeva slobode kao da je na~s element "sam na svijetu" -- on se u ve~tini slu~cajeva nalazi unutar nekog drugog elementa, koji mo~ze imati propisanu svoju ~sirinu. Ako se recimo jedino na~s element A nalazi unutar nekog elementa B, zbroj lijevih i desnih margin~a, ~sirin~a okvira, lijevih i desnih umetaka, te ~sirine sadr~zaja elementa A mora biti jednak ~sirini sadr~zaja elementa B. ~Cesto nam je va~znije podesiti ~sirinu elementa (width svojstvo, vi~se o njemu kasnije) nego margine, pa recimo mo~zemo postaviti lijevu marginu i ~sirinu, te ~sirinu nadre~denog elementa, a desnu marginu postaviti na auto, ~sto zna~ci da je browser treba s~am izra~cunati. Ili mo~zemo postaviti desnu marginu na konkretnu vrijednost, a lijevu na auto, pa ~te element biti u odnosu na desni rub to~cno tamo gdje ~zelimo. Mo~zemo i (p)ostaviti obje margine na auto -- tad ~te browser prepoloviti preostali prostor, ~cine~ti tako element A centriranim unutar elementa B (ako je jedini tamo). (detaljnije)