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`.

…cały layout będzie tutaj…

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

Komentarzy: 7

  1. Mile-X powiedział/a:

    Proste do zrozumienia, pisane latwym jezykiem, nie dlugie, czytelne… czyli wszystko co potrzebne

  2. Filu powiedział/a:

    Ja bym dodał, że IE6 też niedomaga i także potrzebuje tego hacka.

  3. Sasafsal powiedział/a:

    ponownie dziekuje:) zgadzam sie z poprzednikiem Mile-X

  4. bot powiedział/a:

    boty tutaj nie broją ?

  5. Michał powiedział/a:

    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 :-)

  6. Mikołaj Barczentewicz powiedział/a:

    Polecam tekst Riddle’a na ten temat: link.

  7. pawel powiedział/a:

    POMOGŁO. Nie wiedzialem ja kwycentorować pod IE a to pomogło!
    i dodatkowo inny problem rozwiązało.

Pozostaw komentarz

Możesz używać tych tagów XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>