Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Divit

Sivun loppuun

Rocceri [10.06.2010 10:05:25]

#

Mulla on ensiks valikko X pikseliä yläreunasta ja se on Y pikseliä korkee. Sen alla on div id:llä sisalto. #sisalto:n pitäisi olla 100% korkea, mutta kun sille määrittää 100% korkeuden nii se menee yli alareunan. Miten sen saisi venymään alareunaan, ja jos sisältö on pidempoi kuin mitä siihen mahtuu, niin se ois tarpeeks pitkä.

Rocceri [10.06.2010 16:49:06]

#

Eiks tääl kukkaan tiedä??

ankzilla [10.06.2010 16:51:41]

#

Ihmiset eivät ole vielä tulleet töistä, Rocceri.

Teuro [10.06.2010 16:56:43]

#

Mutta siis jos sun eka elementti on vaikka 10 pikseliä yläreunasta ja se on vaikka 40 pikseliä korkea, niin silloin elementti on todellakin 50 pikseliö ruudun yläreunasta. Sisältö alkaa siis 50 pikseliä yläreunasta ja on siis 100 % korkea. Mun näytöllä siis 768 pikseliä. Sisältö menee siis 50 pikseliä näytön alareunan alapuolelle. Tarvinnet min-height asetusta tuolle sisällölle.

Rocceri [10.06.2010 17:01:49]

#

Eikö siihen muka sitten oo muita keinoja? Javascriptillä tietty pystyis ottaan korkeuden, miinustamaan sen alkukohan korkeuden ja sitten asettamaan sisällölle min korkeuden.

Teuro [10.06.2010 17:07:31]

#

Mutta kun css tarjoaa jo tuolle javascriptille vaihtoehdon. Ei sillä että se väärin olisi, mutta javascriptiä ei ehkä ihan tuohon kuitenkaan kannata käyttää.

Rocceri [10.06.2010 17:14:03]

#

En mä vaan saa sitä tolla tyylillä. Minimissään sivun alareunaan, ja jos on enemmän sisältöä, niin scrollbar.

Teuro [10.06.2010 17:17:28]

#

Laita tuonne sisältöön vaikka lorem ipsumia, niin näet että toimii.

<!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" lang="fi">
	<head>
		<title>Min height</title>
		<style type="text/css">
			#logo{
				position: absolute;
				top: 5%;
				height: 7%;
				width: 99%;
				border: 1px solid green;
			}

			#sisalto{
				position: absolute;
				top: 12.5%;
				min-height: 87.2%;
				width: 80%;
				left: 15%;
				border: 1px solid green;
			}
		</style>
	</head>
	<body>
		<div id="logo">
			<ul>
				<li>linkki1</li>
			</ul>
		</div>
		<div id="sisalto">
			<p></p>
		</div>
	</body>
</html>

Eli sisältödiv on ainakin sivun alareunaan, mutta voi olla isompikin. Testattu firefox 3.x sarjan selaimella.

Rocceri [10.06.2010 17:23:27]

#

No tollee se onnistuu, jos korkeudet on prosentteina. Mutta kun sen pitäisi olla ilmoitettu pikseleinä. Muutenhan se ei toimi. Sisältöalueen pitää alkaa 45px yläreunasta.

Rocceri [12.06.2010 12:37:51]

#

Eikö kukaan tiedä, että miten sen saa toimimaan pikseliarvoilla??

Blaze [13.06.2010 11:07:13]

#

Väittäisin, ettei saa, jos jollain on parempaa tietoa, kuulisin mielelläni. Joka tapauksessa fiksuin ratkaisu on unohtaa se 100% korkeus ja kaikki toimii heti.

awly [13.06.2010 19:41:44]

#

Laita molemmat divit yhden ison divin sisään ja tämän ison divin padding-top 45px ja height 100%.

Teuro [13.06.2010 20:04:09]

#

rocceri: Ei ole mahdollista, jos ikkunan korkeus ei ole tiedossa, joten jotakin selaimessa suoritettavaa koodia tarvitaan tähän. Pikselitaitto on (myös) tämän takia huono ratkaisu. awlyn ratkaisu ei toimi ainakaan omassa selaimessani.

Macro [13.06.2010 20:13:25]

#

Minä ratkaisin sen Teuron aijemmin postaaman koodin pohjalta koodin, joka toimii näin:

<html>
    <head>
        <title>Min height</title>
        <style type="text/css">
			body {
				margin: 0;
				padding: 0;
			}

            #logo{
                position: absolute;
                height: 45px;
                width: 100%;
				background-color: green;
            }

            #sisalto{
				position: absolute;
				width: 100%;
				height: 100%;
				background-color: blue;
			}
        </style>
    </head>
    <body>
		<div id="sisalto">
			<p></p>
		</div>

		<div id="logo">
			Yläosa
		</div>
    </body>
</html>

#sisalto pitää määrittää sen takia ensiksi, koska se on 100% korkea, ja jos se olisi alapuolella, se peittäisi #logon. Lyhyemmin: #sisalto on alla 100% korkea, ja #logo päällä.

Teuro [13.06.2010 20:29:38]

#

Nyt vaan sisältö ei ole aseteltu oikein. Lisäksi mikä tuossa koodissa takaa sen, että sisältö alkaa todella 45 pikseliä yläreunasta? Minä luulen, että tuo alkaa otsikon kanssa yhtä aikaa.

Merri [13.06.2010 21:15:20]

#

Pittäkkee kivvaa.


http://merri.net/xhtml/rocceri_100_korkeus_display_table.html

<!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>100% korkeus [display table]</title>
		<style type="text/css">/*<![CDATA[*/

html {
	height: 100%;
}

body {
	display: table;
	height: 100%;
	margin: 0;
	padding: 0;
	width: 100%;
}

#valikko {
	background: #EEE;
	height: 45px;
	position: absolute;
	top: 0;
	width: 100%;
}

#sisalto {
	background: #DDD;
	display: table-cell;
	padding-top: 45px;
}

#piilo {
	background: red;
	display: none;
	height: 2000px;
	width: 200px;
}

		/*]]>*/</style>
	</head>
	<body>
		<div id="valikko">
			Valival
		</div>
		<div id="sisalto">
			<h2>Sisäsil</h2>
			<p>Ei toimi IE7. Toimii kaikissa muissa.</p>
			<p><button onclick="var piilo=document.getElementById('piilo');if(this.p) { piilo.style.display='none'; this.p = 0; } else { piilo.style.display='block'; this.p = 1; }">Paina</button></p>
			<div id="piilo">Piilossa</div>
		</div>
	</body>
</html>

http://merri.net/xhtml/rocceri_100_korkeus_extra_elementti.html

<!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>100% korkeus [extra elementti]</title>
		<style type="text/css">/*<![CDATA[*/

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

#dokumentti {
	background: #DDD;
	min-height: 100%;
	position: relative;
	width: 100%;
}

#valikko {
	background: #EEE;
	height: 45px;
	position: absolute;
	top: 0;
	width: 100%;
}

#sisalto {
	padding-top: 45px;
}

#piilo {
	background: red;
	display: none;
	height: 2000px;
	width: 200px;
}

		/*]]>*/</style>
	</head>
	<body>
		<div id="dokumentti">
			<div id="valikko">
				Valival
			</div>
			<div id="sisalto">
				<h2>Sisäsil</h2>
				<p>Ei toimi IE6. Toimii kaikissa muissa.</p>
				<p><button onclick="var piilo=document.getElementById('piilo');if(this.p) { piilo.style.display='none'; this.p = 0; } else { piilo.style.display='block'; this.p = 1; }">Paina</button></p>
				<div id="piilo">Piilossa</div>
			</div>
		</div>
	</body>
</html>

Macro [13.06.2010 23:22:54]

#

Nähtävästi koodistani unohtui lohko, joka määrittää sisältöalueen tekstin alkavan vasta 45px yläreunasta

Merri [14.06.2010 16:34:31]

#

Jos tarkoitus olisi, että #sisalto olisi "vähintään 100% - 45px niin että taustavärin ja -kuvan on pakko olla #sisallossa", niin hankalaksi menee. Jos sen pitäisi olla vielä IE7- tai IE6-yhteensopiva, niin menee extrahankalaksi. 100% korkeusjutut on pääosin aina aika huuhaata: ei sillä useinkaan oikeasti tee mitään, käyttäjät ei sitä huomaa, yleensä "feikkaamalla" järkevällä elementtien sijoittelulla ja läpinäkyvyyksin saa halutun lopputuloksen ilman kovinkaan vaikeita kikkailuja.

min-height on varsin pätevä asettamaan passelin minimikorkeuden elementille, jos elementti näyttää esim. vajaalla sisällöllä tietyillä sivuilla typerältä. Vaihtoehto B on miettiä sisältö siten, ettei tule typeriä superlyhyitä sivuja.


Sivun alkuun

Vastaus

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

Tietoa sivustosta