Elementy pozycjonowania

Uwaga: nie wszystkie elementy stylów są akceptowane przez przeglądarki, w których rozpoczęto implementację stylów.

Fundamentalną rolę w nadchodzącej fali witryn nowej generacji będzie pełnić pozycjonowanie elementów na stronie, ważne zwłaszcza w dynamicznym HTML. Obecnie dostępny jest tzw. Working Draft - szkic poleceń opracowanych przez W3C Consortium. Część tych poleceń jest akceptowana przez najnowsze przeglądarki, a praktyczne ich zastosowanie można obejrzeć m.in. na stronach kanałów informacyjnych, interpretowanych przez Internet Explorera 4 Preview 2.

Praktyczne przykłady

<span style="position: relative; left: 200px; top: 50px; width: 400px">Ten akapit...</span>

Ten akapit ma pozycję względną (relative), jest odsunięty od lewego marginesu o 200 pikseli i o 50 pikseli w dół. Pole akapitu ma 400 pikseli szerokości. W rzeczywistości powinien być wyświetlany zaraz pod podaną wyżej definicją, ale pozycjonowanie spowodowało przesunięcie w prawo i w dół.




<div style="position:absolute; left:0%; top:0%"><img src="enter.gif" width=80 height=114 border=0 alt=" "></div>

Obrazek odpowiadający tej definicji jest ustawiony "na sztywno" w lewym, górnym rogu strony.

<div style="position: relative; left: 300px; width: 400px">Wykaz odsunięty o 300 pikseli i mający 400 pikseli szerokości</div>

Najwygodniej (i najbezpieczniej) jest się posługiwać blokami DIV, które są najlepiej interpretowane przez przeglądarki.

Pozycjonowanie absolutne

Elementy pozycjonowane w sposób "absolutny" są wlewane do zarezerwowanych obszarów i zajmują tam miejsce bez względu na pozycję innych elementów. W taki właśnie sposób jest ustawiony obrazek "Enter". Elementy te mogą się nakładać na inne elementy absolutne lub względne, które akurat się tutaj znalazły.

Polecenie pozycjonowania absolutnego może mieć przykładową postać:

position:absolute; left:800px; top:20px

Zalecane jest bardzo uważne i ostrożne stosowanie definicji absolutnych, aby nie popsuć widoku strony, zwłaszcza przy zmianach wielkości okna przeglądarki.

Pozycjonowanie względne

Pozycjonowanie względne odnosi się do miejsca wstawienia definicji. W zaprezentowanym na początku strony przykładzie akapit został przesunięty w prawo i w dół w stosunku do umiejscowienia definicji, za pomocą polecenia:

position:relative; left: 200px; top: 50px

Gdybyśmy zastosowali wartość ujemną, np. top: -50px, akapit zostałby przesunięty w górę.

Pozycjonowanie względne jest bezpieczniejsze z punktu widzenia ostatecznego wyglądu strony i łatwiejsze do kontrolowania.

Nakładanie elementów

Za pomocą pozycjonowania względnego (ale i absolutnego) możemy łatwo uzyskiwać "efekty specjalne", np. nakładanie elementów:

<img src="ami.gif" width=80 height=114 border=0 alt=" ">
<div style="position: relative; top: -84px; left: 30px"><img src="enter.gif" width=80 height=114 border=0 alt=" "></div>
<div style="position: relative; top: -168px; left: 60px">'<img src="pcq.gif" width=80 height=114 border=0 alt=" "></div>

Wyjaśnienie konstrukcji:

Obrazki mają 80 pikseli szerokości i 114 pikseli wysokości. Blok DIV powoduje ustawianie ich jeden pod drugim. Chcemy jednak, aby kolejne obrazki były przesunięte o 30 pikseli w dół i w prawo w stosunku do poprzedniego. Pierwszy obrazek można wstawić bez definiowania pozycji. Drugi obrazek jest ustawiany pod pierwszym, Musimy więc "cofnąć" go o 84 piksele w górę (114-30), a także przesunąć w prawo o 30 pikseli. Trzeci obrazek musimy przesunąć w górę już o 114+114-60 pikseli, czyli top: -168px. Trzeba go także przesunąć w prawo o 60 pikseli, czyli left: 60px.

Zrozumienie konstrukcji nie nastręcza chyba większych trudności.

W analogiczny sposób można nakładać na siebie bloki tekstu:

To jest jakiś tam tekst
To jest inny tekst

Pozycja pionowa w stosie

Możemy regulować pionową pozycję w stosie nałożonych na siebie elementów (tzw. z-order). Służy do tego polecenie z-index: n.

<:div style="position: relative; z-index: 1"><img src="ami.gif" width=80 height=114 border=0 alt=" "><:/div>
<:div style="position: relative; top: -84px; left: 30px; z-index: 3"><img src="enter.gif" width=80 height=114 border=0 alt=" "><:/div>
<:div style="position: relative; top: -168px; left: 60px; z-index: 2"><img src="pcq.gif" width=80 height=114 border=0 alt=" "><:/div>

Obrazki są układane w kolejności od z-index: 1 (na dole) do z-index: 3 (na górze). Poprzednio mieliśmy kolejność Amiga - Enter - PCkurier, a obecnie - Amiga - PCkurier - Enter.

Analogicznie, w przypadku tekstu:

To jest jakiś tam tekst
To jest inny tekst

Kadrowanie

Netscape Communicator pozwala kadrować elementy, czyli "wycinać" z nich widoczny na ekranie fragment. Przykład:

<div style="position:relative; clip: rect(1,60,90,1)">
<img src="ami.gif" width=80 height=114 border=0 alt=" ">
</div>

Liczby 1, 60, 90 i 1 wyznaczają rogi prostokąta - top, right, bottom, left. Obecnie jest możliwe jedynie wycinanie prostokątów.

Rozmiary

Elementy mogą przyjmować szerokość i wysokość, definiowane za pomocą poleceń:

width: xx i height: yy

<div style="width: 200px">Ten akapit...</div>

Ten akapit nie może większej szerokości niż 200 pikseli. Ten akapit nie może większej szerokości niż 200 pikseli. Ten akapit nie może większej szerokości niż 200 pikseli. Ten akapit nie może większej szerokości niż 200 pikseli. Ten akapit nie może większej szerokości niż 200 pikseli.

Ustalenie szerokości bloku tekstu pozwala ograniczyć do tej szerokości koloru tła (background-color):

Ustalenie szerokości bloku tekstu pozwala ograniczyć do tej szerokości kolor tła:

Wysokość elementów nie jeszcze interpretowana.