Skip navigation.

Światełko w tunelu

by Wasacz

Umieszczanie elementu na środku strony

,

Ostatnio miałem potrzebę umieszczenia najzwyklejszego bloku div na środku strony. Jeszcze kilka lat temu najczęstszym rozwiązaniem było zastosowanie tabeli z wysokością i szerokością ustawioną na 100%. Jest to sposób najgorszy z możliwych, dzięki któremu uzyskamy niesemantyczny, zaśmiecony kod strony. Wyśrodkowanie, które mam na myśli, można osiągnąć, korzystając wyłącznie z CSS.

Zacznijmy od początku. Za element, który będziemy pozycjonować, odpowiada kod:

<div id="box">This is the box.</div>

Powininen on znajdować się wewnątrz znacznika body. Nadanie identyfikatora id="box" możemy pominąć tylko w przypadku, gdy w dokumencie znajdować się będzie dokładnie jeden element div. To tyle, jeśli chodzi o HTML.

Przejdźmy do arkusza stylów. Na początek, dla świętego spokoju, zresetujmy margines (margin) i dopełnienie (padding) dla body, ustawiając dla nich wartość 0.

Nasz wycinek będzie miał wymiary 200x70 pikseli, co naturalnie definiujemy w arkuszu. Będziemy pozycjonować absolutnie, więc dla #box musimy ustawić ujemne marginesy. Lewy margines to ujemna wartość, będąca połową szerokości; górny - analogicznie, czyli połową wysokości. Otrzymujemy zatem:

div#box {
   width: 200px;
   height: 70px;
   margin-left: -100px;
   margin-top: -35px;
}

Zostało tylko właściwe centrowanie. Ta czynność jest już banalnie prosta - do stylów naszego #box dorzucamy:

   position: absolute;
   left: 50%;
   top: 50%;

Teoretycznie to już koniec, ale wypadałoby zadbać o względy estetyczne Homer: Doh! Zwykle najbardziej praktyczne będzie ustawienie text-align: center; dla wycinka. Jeśli blok posiada tylko jedną linię tekstu, warto ustawić line-height o wartości równej wysokości bloku (w naszym przypadku 70px). Wtedy tekst pojawi się dokładnie pośroku centrowanego elementu.

:star: Voila!

Kolorki na phpBB.comWeekly Opery 9.5 już niedługo

Comments

Reinmar.B 21. June 2007, 17:01

Tak mistrzu, semantyka P: Jak ja dawno nie bawiłem się kodem... Może znajde czas i znów zasiadę do tego :wink: Przy okzaji thx za rady na przyszłość xD

Wasacz 21. June 2007, 17:08

"nmzc" jak zwykła mówić dzisiejsza młodzież.

I witamy na OC! wine

Anonymous 25. June 2007, 16:04

Anonymous writes:

a nie ;) ?

Wasacz 25. June 2007, 16:46

a nie <center> </center> ?


No, sir banana

Anonymous 4. January 2008, 18:09

Radex writes:

jest zdeprecjonowany

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

Type the two words displayed in the image below:


Smilies

July 2009
M T W T F S S
June 2009August 2009
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