Centrování v CSS — příklad 4

Toto je příklad oboustranného (horizontálního i vertikálního) centrování boxu na stránce pomocí CSS. Centrovaný box (kde se nachází tento text) má pevné rozměry 550 (šířka) x 300 (výška) pixelů. Pokud se do něj obsah nevejde, lze jím posouvat svislým posuvníkem vpravo.

Jak je to uděláno

Celý obsah této stránky je "zabalen" do prvku <div> s unikátním atributem id. Kód vypadá nějak takto:

<div id="page">
  ...
  zde je obsah stránky
  ...
</div>
  

V definici CSS pak jsou definována pravidla pro <body> dokumentu a pro <div> s atributem id = page. Vypadá to takto:

body {
  margin: 0;
  padding: 0;
  color: #000;
  background : #ffc none;
}
#page {
  width: 550px;
  height: 300px;
  padding: 10px;
  border: 2px solid #cc9;
  position: absolute;
  top: 50%;
  left: 50%;
  margin: -150px 0 0 -275px;
  overflow: auto;
  color: #000;
  background : #fff none;
  voice-family: "\"}\"";
  voice-family: inherit;
  margin: -162px 0 0 -287px;
}
  

Kompatibilita

Příklad byl testován v IE 5.0, kde je plně funkční a v Opeře 5.12, kde nefunguje pravidlo overflow: auto; a text tedy přetéká přes spodní okraj centrovaného boxu.

Kvůli IE 5 a jeho nesprávné interpretaci rozměrů (šířky a výšky) boxů jsme použili trik s pravidly

voice-family: "\"}\"";
voice-family: inherit;
  

IE 5 tato pravidla mylně považuje za ukončení definice daného selektoru a za nimi definovaná pravidla přeskočí. To umožňuje nejprve nadefinovat výšku a šířku, resp. absolutní pozici pro IE 5 a pak ji předefinovat pro NN 6 a Operu.

Poznatky z dalších prohlížečů uvítáme na adrese redakce@sovavsiti.cz.

Další příklady

K dispozici jsou další příklady centrování, konkrétně na horizontální centrování boxu s plovoucí šířkou, horizontální centrování boxu s pevnou šířkou a horizontální i vertikální centrování boxu s plovoucími rozměry.