Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: CSS divin korkeus ja scrollbar

dwarfer [08.07.2010 00:18:44]

#

Tervehdys jälleen kerran.
Elikkäs, ongelmana on sellainen että en saa divin korkeutta 100% sivusta tai niin korkeaksi kuin on tarpeen.

Alla olevilla koodeilla sivu näyttää oikealta ja divit venyvät koko sivun korkuisiksi. Jos kuitenkin ylittää korkeuden niin selaimen scrollbar ei toimi (pysyy harmaana). Eli en näe mitenkään mitä on sivun korkeuden ylittävällä alueella.

HTML:

<div class="box_container">
	<div class="box_left_border"><div class="box_left"></div></div>

	<div class="box_container_middle">

		<div class="box_top_border"><div class="box_top">Test Caption</div></div>

		<div class="box_content_spacer_1"></div>

		<div class="box_menu">

		</div>

		<div class="box_content_spacer_1"></div>

		<div class="box_content">
			tekstiä yli sivun reunan<br><br>...
		</div>
		<div class="box_content_spacer_1"></div>
		<div class="box_bottom_border"><div class="box_bottom">Test Caption</div></div>
	</div>

	<div class="box_right_border"><div class="box_right"></div></div>
</div>

CSS:

html {overflow-y: scroll; height: 100%;}

* {padding:0; margin:0; font-family: "Lucida Grande", "Lucida Sans Unicode", arial, helvetica, verdana, sans-serif;}

body {
	background-color: #b4cbc6;
	line-height: 130%;
	color: black;
	//font-family: "Palatino Linotype", sans-serif;

	font-size: 12px;
	font-weight: normal;
	min-height: 100%;
	height: 100%;

}
div.box_top_border{
	border: 1px solid #b4cbc6;
	border-width: 0px 0px 0px 0px;
	padding: 0px 0px 0px 0px;
	float: left;
}
div.box_top {
	background:#cfe0db;
	height: 100px;
	width: 1176px;

}
div.box_bottom_border{
	border: 1px solid #b4cbc6;
	border-width: 0px 0px 0px 0px;
	padding: 0px 0px 0px 0px;
	margin: auto 0px 0px 0px;
	float: left;
}
div.box_bottom {
	background:#cfe0db;
	height: 100px;
	width: 1176px;

}
div.box_menu {
	border: 1px solid #b4cbc6;
	border-width: 0px 0px 0px 0px;
	padding: 0px 0px 0px 190px;
	width: 1176px;
	float: left;
	background:url(images/header.png);
	background-repeat: repeat-x;
}
div.box_content {
	border: 1px solid #b4cbc6;
	border-width: 0px 0px 0px 0px;
	padding: 0px 0px 0px 0px;
	width: 1176px;
	float: left;
	//height: 100%;
}
div.box_content_spacer_1 {
	border: 1px solid #b4cbc6;
	border-width: 0px 0px 0px 0px;
	padding: 0px 0px 0px 0px;
	width: 1176px;
	float: left;
	height:5px;
	background:url(images/bg4.png);
	background-repeat: repeat-x;
}
div.box_container {
	background-color: #eaf3f2;
	margin:0 auto;
	overflow: hidden;
	width: 1280px;

	min-height:100%; /* real browsers */
	height:100%; /* IE6: treaded as min-height*/

}
div.box_container_middle{
	border: 1px solid #b4cbc6;
	border-width: 0px 0px 0px 0px;
	padding: 0px 0px 0px 0px;
	width: 1176px;

	min-height:100%; /* real browsers */
	height:100%; /* IE6: treaded as min-height*/


	float: left;
}
div.box_left_border{
	border: 1px solid #b4cbc6;
	border-width: 0px 1px 0px 0px;
	padding: 0px 1px 0px 0px;
	width: auto;

	min-height:100%; /* real browsers */
	height:100%; /* IE6: treaded as min-height*/
	float: left;
}
div.box_left {
	background:#b4cbc6;
	width: 50px;
	background-image: url(../images/bg2.png);
	background-repeat: repeat-y;

	min-height:100%; /* real browsers */
	height:100%; /* IE6: treaded as min-height*/
}
div.box_right_border{
	border: 1px solid #b4cbc6;
	border-width: 0px 0px 0px 1px;
	padding: 0px 0px 0px 1px;

	min-height:100%; /* real browsers */
	height:100%; /* IE6: treaded as min-height*/
	float: right;
}
div.box_right {
	background:#b4cbc6;
	background-image: url(../images/bg3.png);
	background-repeat: repeat-y;

	min-height:100%; /* real browsers */
	height:100%; /* IE6: treaded as min-height*/
	width: 50px;
}

Vähän kaikenlaista olen koittanut ja löysin netistä

height: auto !important;

tuollaisen koodinpätkän, mutta tuo koodi sekoittaa sivun totaalisesti. Divit ei näy todellakaan siellä missä niiden pitäisi.

EDIT: Eli siis box_left_border, box_left, box_container_middle, box_right_border, box_right pitäisi olla aina venytettynä sivun ylälaidasta alalaitaan ja muuttua sitä mukaan kun box_contentsiin lisätään tavaraa.

dwarfer [08.07.2010 12:22:30]

#

Taino... Ei se sitä sivua ilmeisesti totaalisesti sekoitakkaan. Se ei vaan piirrä noita box_left_border, box_left, box_right_border, box_right näytölle.

Kuinkahan saisi edes niin että nuo venyvät box_container_middle:n korkeuden mukaan?

Merri [08.07.2010 18:07:57]

#

Jos nyt on ihan pakko saada 100% height ja vielä ihan IE6:sta alkaen, niin demosivu ja koodi:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title></title>
		<style type="text/css">/*<![CDATA[*/

html,body,#satanen {
	height: 100%;
	margin: 0;
	padding: 0;
}

#satanen {
	background: #DDD;
	border-collapse: collapse;
	width: 100%;
}

#satura {
	vertical-align: top;
}

		/*]]>*/</style>
	</head>
	<body><table id="satanen"><tr><td id="satura">
		<div id="dokumentti">
			<h1>Kyllä tästä satasen saa</h1>
			<button onclick="this.style.height = this.style.height ? '' : '2000px'">Korkeus</button>
		</div>
	</td></tr></table></body>
</html>

Mutta noin yleisesti ottaen: tämä on sellainen tekninen kikkailu jota 99,99% sivun kävijöistä ei taatusti mitenkään noteeraa. Yleensä on parempi jo lähtökohtaisesti suunnitella sisältö ja sivun rakenne niin, ettei tarvitse miettiä 100% korkeuksien perään.

Tässä esimerkissä taulukkoelementti on pakollinen, koska IE6 ja IE7 eivät tue display: table;a. Taulukkoelementtihän toimii luonnostaan siten, että jos minkään solun sisältö ylittää asetetun taulukon korkeuden, niin taulukko sitten kasvaa kasvamistaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta