Samouczek CSS - Wyświetlanie i pozycjonowanie elementów
Autor: Bożena Jurczyk
Opublikowano: 2011-06-07
Zazwyczaj elementy HTML traktowane są przez przeglądarki jako elementy blokowe. CSS wyróżnia dwa typy bloków – elementy blokowe i elementy śródliniowe. Mimo że większość arkuszy stylów traktuje je tak samo, to istnieją znaczące różnice w sposobie wyświetlania tych elementów. Na szczęście istnieje pewna właściwość, która likwiduje te różnice. Możemy zatem sprawić, aby dla naszych potrzeb element blokowy zachowywał się jak śródliniowy i odwrotnie.
Z kolei za pomocą właściwości pozycjonujących mamy pewnego rodzaju kontrolę nad położeniem elementów na naszej stronie. Należy jednak pamiętać, że dobieranie stałych wartości niesie ze sobą pewne ryzyko – zmiana choćby rozmiaru czcionki przeglądarki przez odwiedzających może całkowicie zburzyć układ witryny.
Po zapoznaniu się z tym artykułem będziesz:
- Wiedział, jak zachowują się elementy blokowe, a jak śródliniowe,
- mógł wedle życzenia nadawać cechy blokowości każdemu elementowi,
- potrafił umieścić element na stronie dokładnie w tym miejscu, w którym zechcesz,
- znał zasady wyświetlania elementów nakładających się na siebie.
Implementacja
Właściwość, która decyduje, w jaki sposób wyświetlany będzie dany element, to display. Może ona przyjąć trzy wartości:
- inline – sprawia, że dany element zachowuje się jak element śródliniowy,
- block – mówiąca elementowi, że jest elementem blokowym,
- none – jej zadaniem jest po prostu ukrycie danego elementu na stronie.* *
Elementy blokowe wiążą się z dodatkowym odstępem za i przed elementem. Do tej grupy należą takie znaczniki, jak: <p>, <div>, <table>.
Z kolei elementy liniowe nie dodają żadnego odstępu i nie można też dodać do nich górnych oraz dolnych marginesów ani dopełnień – nie daje to więc oczekiwanego przez nas rezultatu. Wyjątkiem jest tu znacznik <img/>. Do grupy elementów liniowych należą też np. <strong>, <a>.
Rys.1. Przykład strony z elementami blokowymi i liniowymi.
W kolejnym przykładzie zastosowano następujący styl do tych samych elementów liniowych:
a, strong
{
margin: 10px;
padding: 10px;
}
Rys. 2. Przykład strony z zastosowaniem górnych i dolnych marginesów oraz dopełnień dla elementów liniowych.
Jak widać, górny i dolny margines w tym przypadku nie działa.
Pozycjonowanie elementów na stronie
W CSS mamy dostęp do czterech typów pozycjonowania:
- bezwzględne (absolute),
- względne (relative),
- stałe (fixed),
- statyczne (static).
Pozycjonowanie bezwzględne
selektor { position: absolute; pozostałe parametry}
Umożliwia ono określenie elementu na stronie poprzez podanie wartości odległości od poszczególnych krawędzi zawierającego kontenera. Jednostką do wykorzystania są piksele, em oraz procenty. Możemy określić pozycję left, right, top i bottom (czyli odpowiednio odległość od lewej, prawej, górnej i dolnej krawędzi).
Należy pamiętać, że elementy pozycjonowane bezwzględnie są zupełnie niewidoczne dla pozostałych elementów w kodzie HTML, co oznacza, że nie mają wpływu na ich układ. Dlatego też należy uważać, aby nie przykryły innych elementów posiadających ważną treść.
Informacja |
Nie należy stosować właściwości position: absolute do elementów pływających. Właściwości float oraz absolute nie mogą oddziaływać jednocześnie na ten sam element. |
W przykładzie poniżej zastosowano następujące wartości dla akapitu:
position: absolute, left:100px, top:-10px, width: 150px oraz padding: 10px.
Rys. 3. Przykład strony z akapitem wypozycjonowanym bezwzględnie.
* *
Pozycjonowanie względne
selektor { position: relative; pozostałe parametry }
Element pozycjonowany względnie jest przesuwany o wartości określone jako left, right, top oraz bottom względem swojego początkowego położenia na stronie. W przeciwieństwie do pozycjonowania bezwzględnego pozostałe elementy wiedzą o jego istnieniu i dostosowują się do jego pierwotnej pozycji. Przesunięty element pozostawia zatem po sobie puste miejsce, w którym znajdowałby się normalnie.
Informacja |
Pozycjonowanie względne stosuje się zazwyczaj nie do przenoszenia elementów na stronie, ale raczej wyznaczania nowego punktu odniesienia dla elementów, które się w nim znajdują. |
W przykładzie poniżej zastosowano następujące wartości dla akapitu:
position: relative, left:100px, top:-10px, width: 200px oraz padding: 10px.
Rys. 4. Przykład strony z akapitem wypozycjonowanym względnie.
Pozycjonowanie stałe
selektor { position: fixed; pozostałe parametry }
Element tak pozycjonowany jest zablokowany w określonym miejscu na ekranie. Dlatego też wartości pozostałych parametrów zawsze określane są względem krawędzi okna. Elementy takie są stale widoczne i nie przewijają się z pozostałą zawartością strony. Nie mają też wpływu na pozostałe elementy i są wyświetlane nad nimi.
Niestety, Internet Explorer 6 i wersje wcześniejsze nie potrafią zinterpretować tego ustawienia.
W przykładzie poniżej zastosowano następujące wartości dla akapitu:
position: fixed, left:100px, top:-10px, width: 200px oraz padding: 10px.
Rys. 5. Przykład strony z akapitem wypozycjonowanym na stałe.
Pozycjonowanie statyczne
selektor { position: static; }
Element tak pozycjonowany to nic innego, jak element z normalnego biegu kodu HTML. Jest to domyślna metoda pozycjonowania.
Przy określaniu parametrów left, right, top oraz bottom możemy (ale nie musimy) ustawić wszystkie cztery właściwości. Ustawienie zarówno lewej, jak i prawej pozycji oznaczać będzie, że przeglądarka sama określi szerokość elementu, która zależna będzie wtedy od szerokości okna przeglądarki. Wyjątkiem jest przeglądarka Internet Explorer 6 i wcześniejsze, które to wyświetlają poprawnie lewą pozycję, zaś prawą pomijają. To samo dotyczy wysokości pozycjonowanych elementów.
Informacja |
Element pozycjonowany jest w rzeczywistości pozycjonowany względem okna tylko wtedy, gdy nie znajduje się w innym elemencie pozycjonowanym bezwzględnie, względnie lub na stałe. W przeciwnym wypadku jest on pozycjonowany właśnie względem znacznika, w którym jest zagnieżdżony. |
Często przy pozycjonowaniu nieuniknione jest nakładanie na siebie różnych elementów. Aby mieć pewność, który element pozostanie na wierzchu, możemy użyć właściwości z-index. Im wyższa jej wartość, tym wyższy priorytet danego elementu. Dopuszczalne są zarówno wartości dodatnie, jak i ujemne. W ten sposób, niezależnie od kolejności wystąpienia w kodzie HTML, możemy kontrolować nakładanie na siebie wyświetlanych elementów.
Do kolejnego przykładu zastosowane zostały style:
div{ position:absolute; width:100px; height:100px; }
#div1{ background:red; z-index:2;}
#div2{ top:30px; left:10px; background:blue; z-index:1;}
Zaś HTML to jedynie dwa znaczniki div:
<div id="div1"></div>
<div id="div2"></div>
Ponieważ div1 posiada najwyższy z-index, dlatego znaduje się nad elementem div2.
Rys. 6. Przykład strony, na której użyto właściwości z-index.
Podsumowanie
W tym artykule zapoznaliśmy się ze sposobami wyświetlania elementów na stronie oraz ich pozycjonowania. Jak widać na prostych przykładach, w których zastosowaliśmy te właściwości, odpowiednio wykorzystane mogą stać się dobrym sposobem na utworzenie ciekawego układu na naszej witrynie internetowej.
W kolejnym artykule będziemy się uczyć wykorzystywać marginesy i dopełnienia, aby mieć jeszcze pełniejszą kontrolę nad wykorzystanymi przez nas elementami.