Centrowanie layoutu w CSS
Wpis z dnia 21.01.2005, umieszczony w kategorii "CSS & XHTML".
Jest to jeden z poważniejszych problemów związanych z CSS, ponieważ nie jest rozwiązany w sposób jednoznaczny, który byłby bez problemu interpretowny przez wszystkie przeglądarki. Dlatego jesteśmy zmuszeni posługiwać się hackami takimi jak ten, który jest wykorzystany na tej stronie. Jego autorem jest Dan Cederholm.
Przede wszystkim potrzebujemy diva, w którym będzie umieszczone wszystko inne. Nazwiemy go `container`.
Teraz używając CSS wycentrujemy wszystko, co znajduje się w `#container`:
body {
text-align: center;
}
#container {
margin: 0 auto;
width: xxxpx;
}
Jak pewnie zauważyliście wszystko w body centrujemy. Ktoś mógłby zapytać po co to ustawiać jak i tak bez tego wszystko działa. A mianowicie robimy to dla IE5/Win, która tylko w ten sposób poprawnie wyświetli stronę. Ustawiamy też dla `#container` specyficzną szerokość (jakąkolwiek kto chce). Drugim kawałkiem, który sprawia, że wszystko działa jest `margin: 0 auto;`. Ustawiamy margines 0 pikseli u góry i u dołu, a z lewej i prawej dajemy wartość automatyczną.
To jest to. Pozostaje jeszcze tylko jeden problem. Jeśli zostawilibyśmy kod w obecnej postaci to tekst wewnątrz diva byłby wycentrowany. Jeżeli tego nie chcecie to trzeba dodać jeszcze jedną linijkę:
#container {
margin: 0 auto;
width: xxxpx;
**text-align: left;**
}
Dzięki temu, wszystko w divie `#container` będzie wyrównane do lewej a cały layout będzie wycentrowany. Taki sam efekt można osiągnąć centrując nie cały layout, ale pojedyncze elementy strony.
> Artykuł jest tłumaczeniem ze strony SimpleBits.
— 21/01/2005 | Trackback



30.01.2005, 13:07
Proste do zrozumienia, pisane latwym jezykiem, nie dlugie, czytelne… czyli wszystko co potrzebne
30.03.2006, 17:24
Ja bym dodał, że IE6 też niedomaga i także potrzebuje tego hacka.
03.11.2006, 15:21
ponownie dziekuje:) zgadzam sie z poprzednikiem Mile-X
08.11.2006, 4:25
boty tutaj nie broją ?
24.01.2007, 23:02
a jeśli chciałbym wycentrować też tło? tłem będzie pasek szerokości 9 px i długości 1200 px pośrodku będzie mieć linię i chce żeby linia tła zachodziła na linię centrowanego obiektu.co wtedy? Bardzo bym prosił o pomoc
01.03.2007, 17:49
Polecam tekst Riddle’a na ten temat: link.
08.09.2007, 15:11
POMOGŁO. Nie wiedzialem ja kwycentorować pod IE a to pomogło!
i dodatkowo inny problem rozwiązało.