Terve,
<html> <head> <title>Otsikko</title> </head> <body> <div id="sivu"></div> </body> </html>
html { height:100%; } body { height:100%; margin:0; } #sivu { width:800px; height:98%; margin:auto; }
Mitä varten tuo koodi ei keskitä sivua pystysuunnassa?
Firefoxissa sivu jää kiinni selaimen yläreunaan vaikka kaiken järjen mukaan ylhäällä ja alhaalla pitäisi olla 1% tilaa kummassakin.
Mod. lisäsi kooditagit
Margin: auto toimii vain vaakasuunnassa. Saat #sivun täysin keskelle näin: #sivu {margin: 1% auto;}
html { height:100%; } body { height:100%; margin:0; } #sivu { height:98%; margin:1% auto; }
Osaatko sanoa, minkä takia tuo css venyttää sivua yli 100%? Sivulle ilmestyy vierityspalkki.
Mod. lisäsi kooditagit
Tapa 1:
<!DOCTYPE html> <html> <head> <title>Otsikko</title> <style type="text/css"> body { margin: 0; padding: 0; } #sivu { background: #EEE; height: 98%; left: 50%; margin-left: -400px; position: absolute; top: 1%; width: 800px; } </style> </head> <body> <div id="sivu">Sivu</div> </body> </html>
Tapa 2:
html { height: 100%; } body { height: 100%; margin: 0; padding: 0; } #sivu { background: #EEE; height: 98%; margin: 0 auto; position: relative; top: 1%; width: 800px; }
Tapa 3:
html { height: 100%; } body { height: 98%; margin: 0; padding: .9% 0; } #sivu { background: #EEE; height: 100%; margin: 0 auto; width: 800px; }
Viimeisin näistä lähinnä alkuperäistä. Käytän bodyn paddingia, jotta bodystä tulisi (lähes) 100% korkea. Yli 100% menevä yhteiskorkeus johtuu pikselin tarkkuuden pyöristysongelmista, siksi käytin .9%.
Muoks!
Tämä viimeinen on aika epäluotettava kapistus näemmä. Tapa 2 lienee oma suosikkini, sen pitäisi ainakin standarditilan DOCTYPEllä toimia myös IE6:ssa, toisin kuin negatiivisen marginaalin takia riskaabeli ykkönen.
Marginaalin ongelmahan on siinä, että jos se on #sivussa 1% ylälaidassa, niin se siirtääkin myös jopa html-elementtiä sen 1% alaspäin -> vierityspalkki. Tämä johtuu siitä tavasta, jolla marginaalit toimivat.
Tapa 4:
html { height: 100%; } body { height: 100%; margin: 0; padding: 0; } #sivu { background: #EEE; height: 98%; margin: 0 auto; padding: 1% 0 0 0; width: 800px; }
Kaikki ratkaisut vaikuttaa vähän menevän säätämisen puolelle. Saa sitten tuo väkisin venyttäminen jäädä.
Eihän se niin vaikeaa ole "säätää", kun Merri antoi neljä toimivaa esimerkkiä.
Kokonaan oma asiansa on sitten se, haluatko saada aikaiseksi sen, että 100% on minimikorkeus ja jos sisältöä on enemmän, niin sivu sitten venyisi. Joka tapauksessa tämä on asioita, jotka eivät CSS:llä luonnistu niin sujuvasti. Helpointa on määrittää elementille min-height, jolla saadaan ainakin taattua haluttu vähimmäiskorkeus.
Aihe on jo aika vanha, joten et voi enää vastata siihen.