Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Div height 100% ei toimi

Sivun loppuun

punppis [20.05.2008 11:15:12]

#

Ihmiset nyt mollaa tuota tablella tekemistä, niin yritän epätoivoisesti tehdä sivuja divejä käyttäen. Ongelmani on, että divissä ei oikein toimi 100% korkeus. Tässä koodeja:

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">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>Trailerz</title>
		<link href="style.css" rel="stylesheet" type="text/css" />
	</head>
	<body>
		<div id="wrap">
			<div id="yla">
				<div id="logo">logo</div>
				<div id="mainos_yla">mainos</div>
			</div>
			<div id="ala">
				<div id="navigaatio">
					navigaatio
				</div>
				<div id="sisalto">
					sisältö
				</div>
				<div id="mainos_oikea">
					mainos
				</div>
			</div>
		</div>
	</body>
</html>

CSS:

body {
	padding: 15px;
	margin: 0px;
	font-family: verdana;
	font-size: 12px;
}

div {
	padding: 5px;
	overflow: hidden;
}

#wrap {
	margin: auto;
	width: 900px;
	padding: 0px;
	border: solid 1px black;
}

#yla {
	width: 900px;
	height: 100px;
	background-color: pink;
	padding: 0px;
}

#logo, #mainos_yla {
	width: 350px;
	height: 100px;
	background-color: red;
	padding: 0px;
}

#logo {
	float: left;
}

#mainos_yla {
	float: right;
}

#navigaatio {
	background-color: gray;
	width: 200px;
	float: left;
	height: 100%;
}

#sisalto {
	width: 580px;
	background-color: lightgray;
	float: left;
	height: 300px;
}

#mainos_oikea {
	background-color: gray;
	width: 100px;
	height: 100%;
	padding: 0px;
}

#ala {
	padding: 0px;
	width: 900px;
}

KUVA

Noiden alhaalla olevien kolmen laatikon pitäisi venyä aina yhtä korkeiksi, kuin muutkin ovat. Eipä veny.

Hakoulinen [20.05.2008 15:02:28]

#

auttaisikohan määritys position: relative; mitään?

reca [20.05.2008 17:21:21]

#

#sisalto

height: 100%;

#ala

height: 300px; /* tähän haluttu korkeus */

edit: Viestin ulkoasu.

puavo [20.05.2008 17:25:55]

#

Kokeilepa laittaa Wrap-diviin

position: relative;

ja navigaatio ja mainos_oikea -diveihin

position: absolute;

Sitten vielä pelkästään mainos_oikea -diviin

right: 0;

Merri [20.05.2008 17:58:30]

#

Yrität tällä hetkellä käyttää divejä kuin käyttäisit taulukon soluja, mikä on pääsyy sille, että vaikeuksia on. Toki diveille olisi kätevää saada 100%-ominaisuus, mutta tässäkin tapauksessa on täysin mahdollista käyttää hyväksi sitä faktaa, että taustakuvia on mahdollista asetella myös taaemmille elementeille. Tällöin taustaväriä tai taustakuvaa ei ole pakko laittaa päälimmäisille elementeille (tosin niille voi laittaa jotain lisäkoristetta!). Toisaalta tämä ei ole ainoa vaihtoehto, erilaisia lähestymistapoja on monia.

http://kontu.selfip.info/html.css.js/punppis_height.html

Tässä hieman muunneltuna. Koska leveys on kiinteä, pystyt aivan hyvin sijoittamaan taustakuvan #ala-elementtiin. Jos leveys olisi vaihteleva, niin voisit laittaa taustakuvat #wrap- ja #ala-elementteihin, toinen vasempaan laitaan, toinen oikeaan.


Tässä muutamia esimerkkejä muista lähestymistavoista:

- display: table; hyväksikäyttö, jolla saa elementit toimimaan kuin taulukko.
http://kontu.selfip.info/html.css.js/table_layout.html

- Sama temppu vielä toistamiseen.
http://kontu.selfip.info/html.css.js/two_columns_and_display_table.html

- Elämää ilman divejä saati taulukoita: näinkin monimutkainen ulkoasu onnistuu ilman niitä.
http://kontu.selfip.info/html.css.js/divless_columns.html


Myös absoluuttinen asettelu toki toimii jossain määrin ja sallii 100% käytön, mutta siinä on omat sudenkuoppansa.

punppis [20.05.2008 20:44:12]

#

Kiitos Merrille ja muillekin vastanneille! Nyt kun ongelma on ratkaistu, niin voisiko joku selittää tai antaa linkkiä, että miksi nuo tablet eivät ole niin hyviä. Itse olen ainakin saanut toimimaan vallan mainiosti.

Pallo [20.05.2008 20:51:49]

#

Tsekkaas http://www.aimedia.fi/stupid_tables/everything.html

punppis [20.05.2008 21:48:00]

#

Pallo kirjoitti:

Tsekkaas http://www.aimedia.fi/stupid_tables/everything.html

Tuolla jostain syystä oletetaan, että kun tehdään ulkoasu tableilla, niin CSS-tiedostoja ei ole mahdollista käyttää. Samalla myös manaavat sitä, kuinka kauan noita tabletaittosivuja pitää ladata. Jos nyt oteteaan huomioon, että eletään vuotta 2008, prosessorit generoi sivun kuin sivun niin nopeasti, että optimointia ei tarvita. Nettiyhteydetkin ovat nykyään min. 1 Mbit/s, ja mobiililaitteissakin saadaan aika hyvät siirtonopeudet.

Toinen asia josta tuli kritiikkiä, on hakukoneoptimointi. Mikä estää otsikkotagien käytön tabletaitossa?

En näe itse kyllä mitään ongelmaa tabletaitossa tällä hetkellä...

Merri [21.05.2008 01:18:52]

#

Ongelma on enemmänkin siinä, että taulukot ei ole tarkoitettuja ulkoasun taittamiseen, vaikka se niillä onnistuukin. Otsikkotagia käytetään otsikoille, ei sen takia että lopputulos näyttää otsikolta, vaan sen takia että kerrotaan että on otsikko kyseessä. Jos menet taittamaan leiskan taulukoilla, niin se nostaa esiin sen ongelman, miten tieto pitäisi ymmärtää. Näin esimerkin vuoksi nykyisellään taulukkotaittoisia sivuja on aivan liikaa, jotta hakukoneet voisivat käyttää taulukoita hyväksi indeksointitietona: miten pystyä erottamaan sisältöä tarkoittava taulukko ulkoasutaulukosta?

Kyse on siis nimenomaan erottelusta sen suhteen, käyttääkö HTML:ää ulkoasun kuvaamiseen, vai antaako CSS:n hoitaa ihan kaiken. Toki voi miettiä sitä, miten pitkälle on valmis menemään teknillisen oikeellisuuden, standardien hengen ja periaatteiden saralla, mutta toisaalta kun rakentaa ulkoasun taulukoilla, on se myös toisaalta hyvin sitova, kun oletetaan että elementit rakentuu tiettyyn tapaan sivulle jo ihan HTML:n osalta.

Tuosta "standardien hengestä" vielä sen verran, että tarkoitan sillä tässä tapauksessa nimenomaan niiden asettamien periaatteiden ja ohjenuorien noudattamista: käytetään tageja siihen mihin ne on tarkoitettu, eli tekstit palstaelementteihin, otsikot otsikkotageihin, divit käyttöön silloin kun mitään muuta ei ole käytettävissä ja halutaan koota asioita yhteen, listat listoja kuten valikoita varten jne... Tälle menee eräänlaisena vastakohtana se, että pyritään vain saamaan sivut menemään validaattorista lävitse. Taulukkotaittohan menee validaattorista lävitse, mutta se ei silti ole standardien hengen mukaista, ainakaan imo. Toki ei validointi itsessään ole sekään väärin, mutta validaattori ei huomaa käytätkö elementtejä muuhun kuin sisältöön.


Lopuksi historian oppituntina, että taulukoitahan alettiin käyttää vain sen takia, että niillä ensimmäisenä onnistui ulkoasun kikkailu useampaan palstaan. Taulukoita ei silti missään vaiheessa tarkoitettu tähän, tapa vaan levisi kulovalkeana ennen kuin standardointi ehti tarpeisiin reagoida. Toisaalta sen ansiosta CSS sai tuulta alleen, ja nykyäänhän nettisivuja ei voi kuvitellakaan tekevänsä ilman CSS:ää.

jormi [21.05.2008 11:05:14]

#

Oma kokemukseni on se, että olen aloittanut kotisivustoni taulukkotaitolla ja siitä on kovin työlästä vaihtaa johonkin muuhun. Olen tehnyt monenlaisia harjoitelmia luopuakseni taulukoista,mutta olen todennut, että pienimuotoinen kotisivusto toimii hyvin taulukkotaitolla. CSS-tiedostosta oli paljon hyötyä sivujen ulkoasun tekemisessä. JVM

/* Julkaistun kotisivuston tyylit 07.03.2006. */
body { margin: 0; padding:0;}
table.iso { width: 100%; border-collapse: collapse;
	border-style: solid; border-width: 2px; border-color: #00f; }
h1 { background-color: #bbc; color: #0000EE;}
h3 { text-align: center }
td.logo { font-family: "Arial Black", serif; width: 105px; height: 75px; text-align: center; vertical-align: middle;
          background-color: #bbc; color: #00f;
	border-style: solid; border-width: 1px; border-color: #00f; }
td.nimi { text-align: center; vertical-align: middle;
          background-color: #ccd; color: #00f;}
td.linkki { text-align: center; vertical-align: top;
          background-color: #ccd; color: #00f;}
td.asia { background-color: #dde; color: #000; vertical-align: top; padding: 10px;
	border-style: solid; border-width: 1px; border-color: #00f;}
td.osoite { text-align: center; background-color: #ccd; color: #00f;	border-style: solid;
	border-style: solid; border-width: 1px; border-color: #00f;	}
table.ilma { background-color: #eef; color: #000; }
caption { font-size: 120%; font-weight: bold; }

Metabolix [21.05.2008 11:50:24]

#

Minusta suurin ongelma on siinä, että kaikki haluavat tämän tylsän palikkaulkoasun, joka toistuu joka paikassa. Miksi navigaatiopalkille pitäisi varata koko sivun verran tilaa, jos se ei tarvitse sitä? Minusta sellainen ulkoasu ei millään tavalla kohota sivun arvoa, ja erityisesti ratkaisut, joissa on kaksi sivupalkkia, ovat usein sisältöosaltaan ahdistavan kapeita ja heikommin käytettäviä kuin ne, joissa turhia sivuosia ei ole. Erityisesti henkilökohtaisella kotisivulla toimii varsin hyvin tällainen perusrakenne:

<body>
<ul id="linkit">
  <li><a href="/">Etusivu</a></li>
  <li><a href="/taka.php">Takasivu</a></li>
</ul>
<ul id="valid_logot">
  <li><a href="XHTML-validaattori"><img src="valid-xhtml.png" alt="Valid XHTML 1.0 Strict!" /></a></li>
  <li><a href="CSS-validaattori"><img src="valid-css.png" alt="Valid CSS!" /></a></li>
</ul>

<div id="sisalto">
  <h1>Tervetuloa</h1>
  <p>...</p>
</div>
</body>

Ulkoasusta saa nyt CSS:llä jo monenlaista, ja lopputuloksesta tulee hyvin pienellä vaivalla paljon kotoisampi kuin teräksenharmaista sivupalkeista, jotka kahlitsevat käyttäjän kapealle keskipalstalle.

Kannattaa olla valmis joustamaan hieman niistä tiukoista vaatimuksistaan, niin pääsee helpommalla.

punppis [21.05.2008 14:28:42]

#

Ei pidä väärin ymmärtää. Tuo nyt ei tietystikään vastaa lopullista ulkoasua, vaan nuo teräksenharmaat taustavärit vain helpottaa elementtien hahmottamista.

Merri [21.05.2008 17:50:31]

#

En tiedä kuka ymmärtää nyt väärin ketä, mutta olen sinällään samaa mieltä Metabolixin kanssa siitä, että aivan liian usein toistuu portaalipalikkarakenne "yläosa, kolme palstaa, alaosa". Itseasiassa olen jopa muodostanut inhon sitä kohtaan, mutta en vain anna sen kovinkaan usein näkyä (tosin onhan se kevennyt vuosien varrella, muutama vuosi takaperin vaan "kärähti" päässä). Onneksi isommat kaupalliset sivustot ovat moisesta rakenteesta jo luopuneet ja ulkoasua "rikotaan" enemmän erilaisiksi kokonaisuuksiksi, ja tietoa ja sivun navigointia on mietitty pidemmälle kuin vain siihen, että pyritään tarjoamaan kaikki heti jokaisella sivulla. Eli mietitään tarkemmin miten mikin sisältö pitäisi esittää, sen sijaan että kaikki kahlitaan samaan rakenteeseen, ja mietitään miten kävijät sivulla etenevät.


Sivun alkuun

Vastaus

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

Tietoa sivustosta