Professional Documents
Culture Documents
Witryny internetowe
szyte na miar. Autorytety
informatyki. Wydanie II
Autor: Charles Wyke-Smith
Tumaczenie: ukasz Piwko
ISBN: 978-83-246-1756-2
Tytu oryginau: Stylin with CSS: A Designers
Guide (2nd Edition) (Voices That Matter)
Format: 168x237, stron: 320
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treci
Wstp
12
18
21
XHTML 24
Zasady XHTML 25
Szablon XHTML 30
Znakowanie treci 32
Ukad elementw elementy blokowe i liniowe 32
Hierarchia dokumentu, czyli zapoznanie z rodzin XHTML
42
46
47
48
38
spis treci
Pseudoelementy
Dziedziczenie
66
68
69
69
Kaskadowo
rda stylw
Zasady kaskadowoci
70
Deklaracje 74
Wartoci liczbowe 74
Wartoci kolorw 77
98
Wasnoci tekstu 99
Wasno text-indent 100
Wasno letter-spacing 102
Wasno word-spacing 103
Wasno text-decoration 104
Wasno text-align 105
Wasno line-height 106
Wasno text-transform 107
Wasno vertical-align 108
Uywanie stylw czcionek i tekstu
110
93
10
125
128
141
142
150
153
153
161
169
165
spis treci
173
182
190
Formularze 203
Zasada dziaania formularzy 203
Znaczniki tworzce formularz 204
Formatowanie formularza 212
Listy i menu 219
Listy 219
Menu rozwijalne 231
246
248
Architektura witryny 250
Struktura katalogw
285
253
11
ROZDZIA 4
:YdcMTYXYaKXSO
OVOWOX^a
Jedn z kluczowych zmian zwizanych z wprowadzeniem standardw sieciowych bya rezygnacja z tabel jako szkieletu strony.
Tabele tak naprawd nigdy nie byy do tego przeznaczone. Ich
funkcj byo przechowywanie danych w podobny sposb, jak
przechowuje si dane w Excelu. Jednak przed opracowaniem
kaskadowych arkuszy stylw ukad strony opierano na tabelach,
ktre tworzyy siatk utrzymujc poszczeglne kolumny elementw. Wymuszao to stosowanie rnych sztuczek, jak puste
obrazy GIF, zamania wiersza i twarde spacje. Za pomoc CSS
mona z du precyzj rozmieci elementy na stronie bez potrzeby stosowania adnych elementw prezentacyjnych.
Przy uyciu wasnoci CSS, jak marginesy, dopenienie i obramo wanie, oraz takich technik, jak elementy pywajce i wasno
clear, mona uzyska takie same, a nawet lepsze efekty jak kiedy. Wszystko to jest moliwe przy zachowaniu czystoci kodu
XHTML oraz wspdzieleniu regu stylistycznych przez te same
elementy na rnych stronach. Dziki temu powstaj lekkie i a twe w modyfikowaniu strony.
116
Sukces twrcy strony uywajcego wymienionych technik jest cakowicie uzaleniony od tego, jak dobrze pozna i zrozumie model
blokowy (ang. box model) oraz wasnoci position i display. Na
model blokowy skadaj si narzdzia suce do kontroli pooenia
elementw na stronie. Wasno position suy do okrelania wzajemnych relacji pooenia elementw. Wasno display pozwala
okreli, czy elementy maj ukada si jeden pod drugim, jeden
obok drugiego lub czy w ogle maj by widoczne. Zaczniemy od
modelu blokowego.
Model blokowy
Kady element uyty w kodzie XHTML tworzy na stronie blok.
W zwizku z tym strona XHTML w rzeczywistoci skada si
z pewnej liczby wzajemnie uoonych blokw.
Domylnie obramowanie kadego bloku jest niewidoczne, a to przezroczyste, dlatego niektrzy mogli si zastanawia, gdzie s te bloki.
W CSS wczenie obramowania i pokolorowanie ta jest banalnie
proste. Pozwala to na zobaczenie struktury strony w caej krasie.
Na przykad rysunek 4.1 przedstawia t sam stron, ktr zajmowalimy si pod koniec poprzedniego rozdziau, tylko z pokazanymi
ramkami wok elementw.
Rysunek 4.1. Dziki pokazaniu
ramek wida, e elementy liniowe
czy ciasno otaczaj swoj zawarto, natomiast elementy blokowe,
jak elementy listy, rozcigaj si na
ca szeroko strony (z wyjtkiem
tych, ktre maj ustawione marginesy). Naley rwnie zauway,
e ujemne marginesy akapitw
W tym przypadku pozwalamy przegldarce automatycznie ustawi
wychodz poza blok elementu
elementy na stronie. Aby tworzy bardziej interesujce ukady stro-
Obramowanie
Naley pamita, e rzeczywiste gruboci reprezentowane przez sowa
kluczowe thin, medium i thick
nie s zdefiniowane w specyfikacji
CSS, przez co mog wystpowa
w tym zakresie rnice midzy przegldarkami. Style linii, poza solid,
take nie s okrelone w specyfikacji
CSS. Na przykad linia przerywana
(dashed) moe w rnych przegldarkach mie inne odstpy midzy
kreskami, a i same kreski rwnie
mog si rni.
117
118
Rysunek 4.3. Poniewa wszystkie cztery krawdzie maj by takie same, mona uy skrconego
zapisu wasnoci border. Dopenienie zapobiega
stykaniu si tekstu z obramowaniem
Ustawia ona styl obramowania na lini cig, dziki czemu ramka staje si widoczna kolor i grubo s ustawione domylnie.
Naley jednak pamita, e dodanie krawdzi moe mie wpyw na
ukad strony, poniewa grubo obramowania jest dodawana do rozmiaru caego bloku. Moe to mie znaczenie w zalenoci od tego,
w ktrym miejscu strony znajduje si element. Innym sposobem
na wywietlenie ramki wok elementu jest ustawienie koloru ta,
dziki czemu wida powierzchni bloku. W tym przypadku blok nie
zmienia rozmiaru.
Skrcony zapis wasnoci
Wpisywanie za kadym razem wszystkich czterech wartoci podczas definiowania marginesw, dopenienia lub
ramki elementu bywa nuce. Dlatego w CSS mona uywa skrconego zapisu, pozwalajcego na zdefiniowanie wszystkich czterech wartoci w jednej deklaracji. Kolejno wpisywania wartoci w takich deklaracjach jest
zawsze nastpujca: gra, prawa, d, lewa, czyli zgodna z ruchem wskazwek zegara, zaczynajc od godziny 12.
W zwizku z tym, aby ustawi marginesy dla elementu, poniszy zapis:
{margin-top:5px; margin-right:10px; margin-bottom:12px; margin-left:8px;}
mona zastpi nastpujcym:
{margin:5px 10px 12px 8px;}
Poszczeglne wartoci s oddzielane pojedyncz spacj. Nie stosuje si adnego znaku rozdzielajcego, jak przecinek. Nie ma koniecznoci definiowania wszystkich czterech wartoci. Jeli ktra warto zostanie pominita,
przegldarka uyje wartoci z przeciwnej strony.
{margin:12px 10px 6px;}
W powyszym przykadzie brakuje ostatniej wartoci (lewa krawd). Dlatego w jej miejscu zostanie uyta warto zdefiniowana dla prawej strony (10px).
W poniszym przykadzie zostay ustawione tylko dwie wartoci top i right (gra i prawa). Zatem wartoci
bottom i left (d i lewa) bd wynosi odpowiednio 12 i 10 pikseli.
{margin:12px 10px;}
W kocu, jeli bdzie podana tylko jedna warto, zostanie ona odniesiona do wszystkich czterech stron:
{margin:12px;}
Za pomoc tej skrconej notacji nie da si tylko zdefiniowa dolnej i lewej krawdzi bez podawania wartoci dla
prawej i grnej, nawet jeli wynosz one zero. W takim przypadku mona napisa 0 bez adnej jednostki:
{border:0 0 2px 4px;}
119
120
Dopenienie
Dopenienie to przestrze midzy treci bloku a jego krawdziami.
Poniewa stanowi wewntrzn cz bloku, przyjmuje jego kolor
ta. Rysunek 4.5 przedstawia dwa akapity jeden z dopenieniem
i jeden bez.
Rysunek 4.5. W elementach
z widoczn ramk prawie zawsze
stosuje si dopenienie, majce na
celu odsun tre od ramki
W miejscach, w ktrych kiedy projektanci musieli stosowa dopenienie tabeli i puste GIF-y, co wymagao duej iloci dodatkowego
kodu prezentacyjnego, dzi wystarczy tylko niewielka ilo kodu CSS.
Marginesy
Marginesy s nieco bardziej skomplikowane ni obramowanie i dopenienie. Po pierwsze, wikszo elementw blokowych (akapity,
nagwki, listy itp.) maj domylne marginesy, o czym pisaem ju
wczeniej.
Rysunek 4.6 przedstawia trzy zestawy zoone z nagwka i dwch
akapitw. Pierwszy z nich pokazuje domylne formatowanie
przegldarki. W drugim przypadku zastosowano marginesy i pokolorowano to, dziki czemu wida, jak marginesy tworz pust
przestrze. Trzeci przykad pokazuje, co si dzieje, kiedy marginesy
zostan ustawione na zero elementy si stykaj.
Do dobrych zwyczajw naley umieszczenie poniszej deklaracji na
pocztku kadego arkusza stylw:
* {margin:0; padding:0;}
121
122
Scalanie marginesw
Powiedz to zdanie na gos: Marginesy ssiadujce w pionie s
scalane. Koniecznie trzeba o tym pamita. Ju wyjaniam, co to
znaczy i dlaczego jest takie wane. Wyobramy sobie, e mamy trzy
akapity, jeden pod drugim. Kady z nich formatuje ponisza regua:
p {width:400px; height:50px; border:1px solid #000;
margin-top:50px; margin-bottom:30px; background-color:#CCC;}
Wprawdzie marginesy ssiadujce
w pionie scalaj si, jednak marginesy poziome nie. Te drugie zachowuj
si zgodnie z oczekiwaniami, czyli
tworz odstp rwny ich sumie.
Rozmiary bloku
Zasada dziaania modelu blokowego naley do najtrudniejszych
aspektw CSS zarwno dla ,pocztkujcych jak i zaawansowanych
uytkownikw. Naley pamita, e ponisze informacje dotycz elementw blokowych, takich jak nagwki, akapity czy listy.
Elementy liniowe zachowuj si nieco inaczej.
Przeanalizujemy model blokowy szczegowo, krok po kroku.
Omwimy metody ustawiania szerokoci blokw, ktre maj kluczowe znaczenie w tworzeniu ukadw kolumnowych. Te same zasady
dotycz take ustawiania wysokoci bloku.
Szeroko elementu blokowego (dalej zwanego blokiem) ustawia
wasno width:
p {width:400px;}
123
124
Mona by si spodziewa, e po zastosowaniu 40 pikselowego dopenienia w bloku o szerokoci 400 pikseli na tre pozostanie 360
pikseli. Jest jednak inaczej. W zamian cay blok zostaje powikszony
o 40 pikseli (rysunek 4.9).
Rysunek 4.9. Dopenienie
rozszerza blok
Dodamy jeszcze lewy i prawy margines, aby utworzy pust przestrze wok elementu (rysunek 4.11):
p {width:400px; margin: 0 30px; padding:0 20px; border:#000
solid; border-width: 0 6px 0 6px; background-color:#CCC;}
Dodanie marginesw, w tym przypadku po 30 pikseli z lewej i prawej strony, zwiksza zajmowan przez element powierzchni, poniewa znajduj si one na zewntrz bloku. Mimo i mona by oczekwa, e obramowanie i dopenienie, ktre znajduj si wewntrz
bloku, nie zwikszaj jego szerokoci, prawda jest inna.
Uwaga nr 1 na temat modelu blokowego: Bloki o zdefiniowanych rozmiarach rozszerzaj si w poziomie
w wyniku dodawania do nich marginesw, dopenienia i obramowania.
Wasno width ustawia szeroko
treci bloku, a nie szeroko samego
bloku.
Wzdu grnej krawdzi okna dodaem linijk, aby byo wida, jak
zmienia si szeroko wraz ze zmianami wprowadzanymi w CSS
(rysunek 4.12).
125
126
Jak wida na linijce u gry, dopenienie o szerokoci 10 pikseli spowodowao rozszerzenie elementu do szerokoci 190 pikseli. Dziki
temu tre elementu zostaa odsunita od krawdzi, jednak aby zachowa jego pocztkow szeroko 170 pikseli, musimy odpowiednio
zmniejszy warto wasnoci width elementu div. Ustawimy j
na 150 pikseli. Takie modyfikowanie szerokoci kolumn po kadej
zmianie szerokoci dopenienia bywa mczce. Zwaszcza kiedy
mamy kilka kolumn.
Ewentualnie mona zastosowa jednakowe marginesy do wszystkich
elementw w kolumnie, ale to oznaczaoby konieczno dostosowania wielu elementw, gdybymy zdecydowali si zmieni odlego
kolumny od treci.
<h4>Nagwek h4</h4>
<p>Nagwek ten i akapit...</p>
</div>
</div>
Wewntrzny element div nie ma okrelonego rozmiaru, a wic uwaga nr 2 na temat modelu blokowego jest prawdziwa. Tre zostaa
cinita. Teraz zmieniajc jedno ustawienie marginesu, moemy
odsun wszystkie elementy kolumny od jej krawdzi. Rozmiar
kolumny pozostanie bez zmian. Techniki dwch elementw div
bd uywa w wielu ukadach stron prezentowanych w kolejnym
rozdziale. Dlatego przed przejciem do dalszej czci naley dobrze
zrozumie jej ide.
Wniosek z dotychczasowych rozwaa jest nastpujcy: we wszystkich zgodnych ze standardami przegldarkach wasno CSS width
ustawia nie szeroko elementu, a znajdujcej si w jego wntrzu
treci. Dopenienie, marginesy i obramowanie s dodawane do cakowitego rozmiaru elementu, ktry ma zdefiniowan szeroko.
Teraz przyjrzymy si dwm pozostaym kluczowym technikom
w zakresie projektowania ukadw stron za pomoc CSS. S to elementy pywajce (wasno float) i wasno clear.
127
128
Wasno float
Jednym z zastosowa wasnoci float jest otaczanie obrazw tekstem. Naley ona jednak take do fundamentw ukadw wielokolumnowych.
Zaczniemy od otaczania obrazw tekstem.
img {oat:left; margin:0 4px 4px 0;}
Aby wasno float zadziaaa poprawnie, kod XHTML musi wyglda nastpujco:
<img .../>
<p>...tekst akapitu...</p>
Zastosowanie wasnoci float zarwno do obrazu, jak i akapitu (o ustalonych szerokociach) powoduje, e tekst przestaje owija si wok
obrazu. Jest to jedna z gwnych zasad tworzenia ukadw kolumnowych przy uyciu elementw pywajcych. Elementy ustawiaj si
obok siebie jak kolumny, jeli maj ustalon szeroko i jest dla nich
wystarczajco miejsca (obrazy zawsze maj okrelony rozmiar i nie
trzeba ustawia im rozmiaru w CSS, aby pyway). Jeli ustalimy szeroko trzech elementw div i zastosujemy do nich wasno float,
otrzymamy trzy kontenery, do ktrych mona wstawia inne elementy
(ktre take mog pywa). Praktyczne przykady opisywanych technik
przedstawione zostay w rozdziale 5.
129
130
Wasno clear
Z wasnoci float zazwyczaj wspwystpuje wasno clear. Jeli
jeden element jest pywajcy, inny jeli starczy dla niego miejsca
ustawi si obok niego. Czasami jednak nie chcemy, aby tak si
stao. Wolimy, aby ten drugi element pozosta pod elementem pywajcym. Rysunek 4.17 przedstawia stron zbudowan z elementw
zoonych z obrazu i tekstu otaczajcego go z prawej strony. Efekt
ten uzyskano dziki zastosowaniu pywajcych obrazw. Jest to identyczna sytuacja, jak na rysunku 4.16, tylko powtrzona trzy razy.
Rysunek 4.17. Dziki temu, e
obok drugiego obrazu jest miejsce,
trzeci obraz pywa obok niego
efekt ten nie by zamierzony
Oto kod XHTML powyszej strony (nieco skrcony dla oszczdzenia miejsca)
<img src=../images/dartmoor-view.jpg />
<p>Oto pikny obraz okolicy Dartmoor... </p>
<img src=../images/english-cottage.jpg />
Kod CSS:
p {margin:0 0 10px 0;}
img {oat:left; margin:0 4px 4px 0;}
Kady obraz powinien pywa po lewej stronie opisujcego go tekstu. Jeli jednak tekst jest zbyt krtki i nie zajmuje caego miejsca
dostpnego po prawej stronie obrazu, jak w przypadku drugiego
akapitu na rysunku 4.17, nastpna para obraz tekst zostanie podcignita do gry, w to wolne miejsce.
Ukad ten jest poprawnie interpretowany przez przegldark. Trzeci
element ma wystarczajco miejsca, aby przenie si obok drugiego,
wic to robi. Nie jest to oczywicie zamierzony przez nasz efekt
wizualny. Rozwizaniem w tym przypadku jest dodanie niepywajcego elementu do kodu XHTML i ustawienie jego wasnoci clear
w celu zatrzymania ostatniego elementu na dole. Poniej znajduje si
potrzebny kod XHTML z dodanym elementem div oraz odpowiedni kod CSS:
<img src=../images/dartmoor-view.jpg />
<p>Oto pikny obraz okolicy Dartmoor... </p>
<img src=../images/english-cottage.jpg />
<p>Do niedawna moja siostra mieszkaa w tym piknym domu...</p>
<div class=clearthefloats></div>
<img src=../images/windsor-castle_walls.jpg />
<p>Krlowa Anglii...</p>
131
132
cay kod:
.clearx:after {
content: .;
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearx {display: inline-table;}
/* Lewy ukonik ukrywa kod przed przegldark IE dla komputerw Mac \*/
* html .clear
x {height: 1%;}
.clear
x {display: block;}
/* koniec hacka */
Mona ten kod doda na kocu arkusza stylw, aby by dostpny na kadej stronie (wstawiem go na kocu pliku text_n_colors.css, ktry znajdziesz na FTP). Od tej pory, aby utworzy kontener zamykajcy w sobie pywajc
tre, wystarczy zastosowa do niego klas clearfix, na przykad:
<div class=clearx>
Niektre z zastosowa tej techniki:
1.
Utrzymanie stopki pod pywajcymi kolumnami (ukady zoone z pywajcych kolumn opisuj w rozdziale
5). Klas clearfix naley zastosowa do elementu div zawierajcego kolumny, dziki czemu kontener
ten zawsze bdzie si rozszerza w pionie na dugo wystarczajc do pomieszczenia wszystkich kolumn.
Element div reprezentujcy stopk znajdujcy si za elementem zawierajcym kolumny bdzie dziki temu
znajdowa si zawsze pod najdusz kolumn.
2.
Dodanie obramowania wok kilku pywajcych elementw. Elementy pywajce naley umieci w jednym
kontenerze div i zastosowa do tego kontenera klas clearfix. Dziki temu elementy pywajce pozostan
w kontenerze i wystarczy nada odpowiedni styl jego ramce.
Jest to jedna z tych technik, o ktrych nie wiadomo, do czego mog si przyda, dopki si ich nie potrzebuje.
Z pewnoci jest to lepsze rozwizanie ni wstawianie dodatkowych elementw div do rda strony.
Naley pamita, e w przegldarce IE 6 elementy pywajce s niesusznie zamykane w elementach div. Jest
to jeszcze jeden powd, aby najpierw sprawdza stron w przegldarkach zgodnych ze standardami, a dopiero
potem testowa w IE 6.
Wicej informacji na temat opisywanej metody mona znale pod adresem www.positioniseverything.net/easycle
aring.html.
133
134
Wasno position
Sercem ukadu kolumnowego w CSS jest wasno position.
Pozwala ona zdefiniowa punkt odniesienia, wzgldem ktrego element ma by pozycjonowany na stronie.
Zobaczmy, co to oznacza.
Wasno position moe przyjmowa jedn z czterech wartoci:
static, absolute, fixed i relative. Domylna jest pierwsza z wymienionych. Miaem nieco problemw ze zrozumieniem dziaania tych
wartoci, kiedy po raz pierwszy natknem si na nie. Aby pomc
czytelnikowi unikn takich samych rozterek jak moje, przyjrzymy
si tym czterem wartociom na czterech przykadach dokumentu
zoonego z czterech akapitw. Zmianie bdzie ulega tylko warto wasnoci position trzeciego akapitu. Pozostae akapity cay
czas bd miay t wasno ustawion na warto domyln. Aby
uatwi sobie zadanie, trzeciemu akapitowi nadaem identyfikator
o nazwie specialpara.
Pozycjonowanie statyczne
Najpierw przyjrzymy si naszym akapitom z wasnoci position
ustawion na static (rysunek 4.19).
Rysunek 4.19. Jeli wszystkie
cztery akapity maj zdefiniowan
wasno position jako static, ukadaj si jeden pod drugim zgodnie
ze standardowym rozkadem elementw na stronie
Pozycjonowanie wzgldne
Ustawiamy wasno position trzeciego akapitu na warto relative. Dziki temu moemy przesuwa ten element wzgldem jego
domylnego pooenia za pomoc wasnoci top, right, bottom
i left. Zazwyczaj wystarcz tylko wartoci top i left. Ponisza regua stylistyczna:
p#specialpara {position:relative; top:30px; left:20px;}
135
136
Pozycjonowanie bezwzgldne
Pozycjonowanie bezwzgldne to zupenie inna bajka ni pozycjonowanie statyczne i wzgldne. Pozwala cakowicie wytrci element
z normalnego ukadu dokumentu. Zmodyfikujemy kod z poprzedniego przykadu, zmieniajc tylko warto wasnoci position
z relative na absolute.
p#specialpara {position:absolute; top:30px; left:20px;}
Pozycjonowanie stae
Pozycjonowanie stae (fixed) jest podobne do bezwzgldnego.
Rnica polega na tym, e element jest pozycjonowany w odniesieniu do okna przegldarki. Dziki temu dany element nie przesuwa
si w miar przewijania strony. Rysunki 4.22 i 4.23 przedstawiaj
efekt pozycjonowania staego.
137
138
Dziki przykuciu elementu do okna przegldarki mona symulowa odradzane ramki. Mona na przykad utworzy element nawigacyjny, ktry bdzie cay czas w tym samym miejscu, unikajc
jednoczenie problemw z wieloma dokumentami skadajcymi si
na jedn stron. Pozycjonowanie stae nie dziaa jednak w przegldarce IE 6, ale dziaa w IE 7. Elegancki sposb obejcia problemu
z pozycjonowaniem staym w przegldarce IE 6 zosta opisany na
stronie http://tagsoup.com/cookbook/css/fixed/.
Kontekst pozycjonowania
Poniewa kontekst pozycjonowania jest bardzo wany dla tych,
ktrzy chc zrezygnowa z tabel jako szkieletu strony, omwimy to
zagadnienie szerzej. Zasada jest prosta pozycjonowanie kontekstowe polega na przesuwaniu danego elementu wzgldem innego za
pomoc wasnoci top, right, left i bottom. Ten drugi element jest
wanie kontekstem pozycjonowania. Jak wiemy z podrozdziau
Pozycjonowanie bezwzgldne, kontekstem pozycjonowania elementw pozycjonowanych bezwzgldnie jest element body chyba
e go zmienimy. Na przykad element body zawiera wszystkie inne
elementy strony. Kontekstem pozycjonowania moe by jednak dowolny element bdcy przodkiem innego elementu, jeli jego wasnoci position nada si warto relative.
Przyjrzyjmy si poniszemu kodowi:
<body>
<div id=outer>Zewntrzny element div
<div id=inner>Troch tekstu...</div>
</div>
</body>
Kod CSS:
div#outer_div {width:250px; margin:50px 40px; border-top:3px
solid red;}
div#inner_div {top:10px; left:20px; background:#AAA;}
139
140
Sprawnie posugujc si marginesami i dopenieniem, mona w wikszoci przypadkw przy projektowaniu ukadu strony poradzi sobie
tylko za pomoc pozycjonowania
statycznego. Wielu pocztkujcych
uytkownikw CSS zmienia rodzaj
pozycjonowania prawie wszystkich
elementw, przez co trudno jest
im nad nimi potem zapanowa. Nie
naley zmienia domylnego pozycjonowania elementu, jeli nie jest to
absolutnie konieczne.
Teraz przejdziemy do omawiania wasnoci display, a pniej przeanalizujemy praktyczny przykad zastosowania wasnoci position.
Wasno display
Poza wasnoci position kady element ma take wasno display. Mimo i wasno ta moe przyjmowa kilka wartoci, najczciej uywane s dwie: block i inline. Tym, ktrzy przespali
poprzednie rozdziay, przypominam rnic midzy elementami
blokowymi (block) a liniowymi (inline):
Elementy blokowe, na przykad akapity, nagwki czy listy, ukadaj si jeden nad drugim w oknie przegldarki.
Elementy liniowe, na przykad a, span czy img, ukadaj si jeden
obok drugiego w oknie przegldarki. Przechodz do nowej linii
dopiero wwczas, gdy w aktualnej nie ma dla nich wystarczajco
duo miejsca.
Moliwo zamiany elementw blokowych w liniowe i odwrotnie,
jak poniej:
domylnie element blokowy
141
142
Kod ten pozbawiony regu stylistycznych daje w przegldarce nastpujcy efekt (rysunek 4.28).
Rysunek 4.28. Wszystkie elementy
potrzebne do utworzenia miejsca
na miniatur i zwizan
z ni chmurk
143
144
Elementowi div, ktry peni funkcj kontenera, ustawilimy obramowanie oraz dodalimy dopenienie, aby odsun tekst od krawdzi (oczywicie zwikszajc rwnoczenie jego pierwotn szeroko). Teraz element ten ma szeroko 106 pikseli (92+2+2+5+5).
Dodatkowo zmienilimy wasnoci czcionki w elementach h2 i p
oraz usunlimy ich domylne marginesy.
Podobnie sformatowalimy akapit, ustawiajc mu dopenienie i obramowanie. Element ten bdzie nasz chmurk.
Teraz zaczyna si zabawa. Wyjmiemy nasz akapit z normalnego
ukadu elementw na stronie, zmieniajc jego wasno position na
absolute. Jednoczenie ustawimy t sam wasno elementu div na
relative, aby sta si kontekstem pozycjonowania akapitu. Naley
pamita, e przodkiem elementu pozycjonowanego bezwzgldnie
musi by element pozycjonowany wzgldnie. W tym przypadku element div jest rodzicem elementu p, a wic wszystko jest w porzdku
(rysunek 4.30).
div {position:relative; width:92px; border:2px solid #069;
padding:5px;}
h2, p {font-size:.7em; font-family:Arial, sans-serif;}
p {position:absolute; left:96px; top:15px; width:80px;
border:1px solid gray; padding:.3em; background-color:#FFD;}
Rysunek 4.30. Teraz bezwzgldnie pozycjonowany element reprezentujcy chmurk znajduje si
wzgldem elementu div w takiej
pozycji, jak chcemy
145
146
Dlatego aby przegldarka ta dziaaa zgodnie z naszymi oczekiwaniami, musimy doczy plik JavaScript csshover.htc (zobacz ramk
Pseudoklasa :hover w przegldarce IE 6).
body {behavior:url(csshover.htc);}