"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Probs mit Tabelle (HTML)

valentin 15.06.2003 - 23:13 1473 26
Posts

valentin

Here to stay
Avatar
Registered: Jan 2001
Location: Wien
Posts: 2368
Ich bin gerade dabei mich nach langer Zeit wieder einmal ein bißchen mit HTML herumzuspielen und hab dabei ein typisches N00b Problem.(:bash:;)) Und zwar mit der Tabelle. Sorry, aber ich weiß das es ein Problem ist das durch meine Unfähigkeit bedingt ist.;)

Und zwar zerreisst der IE irgendwie das Layout während Mozilla alles korrekt darstellt.

IE: click to enlarge Mozilla: click to enlarge

Code:
Code:
<body>

 <table width="100%" cellspacing="0" cellpadding="0" border="0">
	<tr>
		<td colspan=2 style='background-image:
		url("images/topthin.gif")'><IMG alt="" border=0 height=70 
      		src="images\logo.gif" width=320></TD>
	</TR>

	<tr>
		<td valign="top" width="160" height="35"><IMG alt="" border=0 height=35 
		src="images\bspacer.gif" width=160></TD>
    
 <td rowspan=9>

	<h1>Computer</h1>

	<h2>Meine Systeme</h2>

	<h3>Main</h3>

	<p>Mainboard: Elitegroup ECS-K7S6A (SiS745) mit Sound onboard<br><br>
	Prozessor: AMD Athlon XP 1600+ AGOIA<br><br>
	Kühler: Wasserkühlung (Zern Delta, Aquacomputer Airplex Evo
240, Eheim 1048...; mehr Info folgt...)<br><br>
	RAM: 768MB DDR-SDRAM (512MB + 256MB)<br><br>
	Grafikkarte: Chaintech GeForce3 Ti200 64MB DDR-SDRAM<br><br>
	Festplatte: Maxtor D540X 60GB (5400 U/min.)<br><br>
	Brenner: Lite-On LTR-48246S (48x/24x/48x CD-R/CD-RW/CD-ROM)<br><br>
	DVD-ROM: Toshiba SD-M1612<br><br>
	Netzwerk: Surecom EP-320X-R1 10/100Mbit<br><br>
	Sonstiges: Teac Floppy, 250W CWT Netzteil
	</p>

	<h3>Mobile</h3>

	<p>Sony Vaio PCG-FX502 (Mobile Duron 1000, 256MB SDRAM, 14.1" TFT)</p>

	<p><a href="index.html">Zurück zu Hauptseite</a></p>


 </TD>

	</TR>

	<tr>
		<td valign="top" width="160" style="height:30px"><a 
href="index.html"><IMG alt="" border=0 height=30 
		src="images\home.gif" width=160></a></TD>
	</TR>

	<tr>
    		<td valign="top" width="160" style="height:7px"><IMG 
alt="" border=0 height=7 
      		src="images\contspacer.gif" width=160></TD>
	</TR>

	<tr>
    		<td valign="top" width="160" style="height:30px"><a 
href="index.html"><IMG alt="" border=0 height=30 
      		src="images\computer.gif" width=160></a></TD>
	</TR>

	<tr>
    		<td valign="top" width="160" style="height:7px"><IMG 
alt="" border=0 height=7 
      		src="images\contspacer.gif" width=160></TD>
	</TR>

	<tr>
    		<td valign="top" width="160" style="height:30px"><a 
href="index.html"><IMG alt="" border=0 height=30 
      		src="images\links.gif" width=160></a></TD>
	</TR>

	<tr>
    		<td valign="top" width="160" style="height:35px"><IMG 
alt="" border=0 height=35 
      		src="images\bspacer.gif" width=160></TD>
	</TR>

	<tr>
    		<td valign="top" width="160" style="height:30px"><a 
href="index.html"><IMG alt="" border=0 height=30 
      		src="images\kontakt.gif" width=160></a></TD>
	</TR>

	<tr>
    		<td valign="top" width="160"><IMG alt="" border=0 height=1 
      		src="images\blank.gif" width=1></TD>
	</TR>


 </TABLE>

</body>

Wo liegt das Problem, was ist zuviel, was zu wenig?
Bearbeitet von valentin am 16.06.2003, 21:09

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10334
Aus eigener Erfahrung weiß ich, dass es mit verbundenen Zellen immer wieder zu Problemen kommt bei verschiedenen Browsern (funktioniert imma nur teilweise... vor allem die ausrichtung nervt da ziemlich)

deshalb: einfach nicht verbinden, sondern mit 'table im table' arbeiten.... gilt in dem fall vor allem für dein menü.. machst einfach 2 spalten, in einer einen eigenen table NUR mit dem menü, in der anderen der content-Table..

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
ja, ist eine typische angewohnheit von IE und NS4, zellen-dimensionen noch großzügiger anzupassen als vorgesehen - gerade bei verbundzellen.
einer der workarounds ist es, unsichtbar oben und ganz links eine reihe bzw spalte mit zellen anzulegen, die die richtigen höhe bzw breite fix eingetragen haben, um kein resizen mehr zu ermöglichen, aber keinen sichtbaren content enthalten.

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Hi,

ich wuerde das mit weniger HTML und mehr CSS machen. Das macht das ganze uebersichtlicher und weniger Fehleranfaellig.

Du brauchst z.b. nicht fuer jedes IMG eine eigene Zeile in der Tabelle. Du kannst diese, da sie alle die gleiche Breite haben, einfach im Code hintereinanderschreiben. Bilder verhalten sich wie Text und brechen um, d.h. nach jedem Bild wird automatisch in die naechste Zeile gebrochen. Du kannst auch die Blind-spacer eliminieren (weniger bilder laden) und mit CSS machen.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title></title>
		<style type="text/css">
			/* Kein border um verlinkte images */
			a img {
				border: 0;
			}
			#top {
				background-image: url(images/topthin.gif);
			}
			#left {
				width: 160px;
				vertical-align: top;
			}
			#right {
				vertical-align: top;
			}
			#left img {
				padding-bottom: 7px;
			}
			#left img.first {
				padding-top: 30px;
			}
		</style>
	</html>
	<body>
		<div id="top">
			<img src="" width="320" height="70">
		</div>
		<table cellspacing="0" cellpadding="0" border="0">
			<tr>
				<td id="left">
					<a href=""><img class="first" width="160" height="30" src="images/home.gif" alt="Home"></a>
					<a href=""><img width="160" height="30" src="images/computer.gif" alt="Computer"></a>
					<a href=""><img width="160" height="30" src="images/links.gif" alt="Links"></a>
					<a href=""><img width="160" height="30" src="images/kontakt.gif" alt="Kontakt"></a>
				</td>
				<td id="right">

					<!-- Content -->
					<h1>Computer</h1>

					<h2>Meine Systeme</h2>

					<h3>Main</h3>

					<p>Mainboard: Elitegroup ECS-K7S6A (SiS745) mit Sound onboard<br><br>
					Prozessor: AMD Athlon XP 1600+ AGOIA<br><br>
					Kühler: Wasserkühlung (Zern Delta, Aquacomputer Airplex Evo 240, Eheim 1048...; mehr Info folgt...)<br><br>
					RAM: 768MB DDR-SDRAM (512MB + 256MB)<br><br>
					Grafikkarte: Chaintech GeForce3 Ti200 64MB DDR-SDRAM<br><br>
					Festplatte: Maxtor D540X 60GB (5400 U/min.)<br><br>
					Brenner: Lite-On LTR-48246S (48x/24x/48x CD-R/CD-RW/CD-ROM)<br><br>
					DVD-ROM: Toshiba SD-M1612<br><br>
					Netzwerk: Surecom EP-320X-R1 10/100Mbit<br><br>
					Sonstiges: Teac Floppy, 250W CWT Netzteil
					</p>

					<h3>Mobile</h3>

					<p>Sony Vaio PCG-FX502 (Mobile Duron 1000, 256MB SDRAM, 14.1" TFT)</p>

					<p><a href="index.html">Zurück zu Hauptseite</a></p>
								
				</td>
			</tr>
		</table>
	</body>
</html>

alexsb

hmm
Avatar
Registered: Jun 2001
Location: near Graz
Posts: 1566
ja, vorschlag von rectal ist gut, ganz besonders würd ich auch drauf schaun dass du wenigstens html 4.1 transitional schreibst, also keine tags in blockbuchstaben, keine Unmengen an attribute im <td> ....

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Noch besser ist natuerlich eine Variante ohne Tabelle. Tabellen sind ja primaer gedacht fuer tabellarische Daten (Excel-style eben) und nicht fuer Layout. Layoutierung ("Presentation") ist primaer die Aufgabe von CSS:

(die Hintergrundfarben sind zur Veranschaulichung der Bereiche)

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title></title>
		<style type="text/css">
			body {
				margin: 0;
				padding: 0;
			}
			a img {
				border: 0;
			}
			#top {
				background: url(images/topthin.gif) red;
				height: 70px;
			}

			#navigation {
				position: absolute;
				top: 70px;
				left: 10px;
				width: 160px;
				background-color: blue;
			}
			#navigation img {
				margin-bottom: 7px;
			}
			#navigation img.first {
				margin-top: 30px;
			}

			#content {
				padding: 1em;
				margin-left: 180px;
				background-color: green;
			}

			h1 {
				margin: 0;
				padding-top: 0.5em;
			}
		</style>
	</html>
	<body>
		<div id="top"><img src="" width="320" height="70" alt="Logo"></div>
		<div id="navigation">
			<a href=""><img class="first" width="160" height="30" src="" alt="Home"></a>
			<a href=""><img width="160" height="30" src="" alt="Computer"></a>
			<a href=""><img width="160" height="30" src="" alt="Links"></a>
			<a href=""><img width="160" height="30" src="" alt="Kontakt"></a>
		</div>
		<div id="content">

			<!-- Content -->
			<h1>Computer</h1>

			<h2>Meine Systeme</h2>

			<h3>Main</h3>

			<p>Mainboard: Elitegroup ECS-K7S6A (SiS745) mit Sound onboard<br><br>
			Prozessor: AMD Athlon XP 1600+ AGOIA<br><br>
			Kühler: Wasserkühlung (Zern Delta, Aquacomputer Airplex Evo 240, Eheim 1048...; mehr Info folgt...)<br><br>
			RAM: 768MB DDR-SDRAM (512MB + 256MB)<br><br>
			Grafikkarte: Chaintech GeForce3 Ti200 64MB DDR-SDRAM<br><br>
			Festplatte: Maxtor D540X 60GB (5400 U/min.)<br><br>
			Brenner: Lite-On LTR-48246S (48x/24x/48x CD-R/CD-RW/CD-ROM)<br><br>
			DVD-ROM: Toshiba SD-M1612<br><br>
			Netzwerk: Surecom EP-320X-R1 10/100Mbit<br><br>
			Sonstiges: Teac Floppy, 250W CWT Netzteil
			</p>

			<h3>Mobile</h3>

			<p>Sony Vaio PCG-FX502 (Mobile Duron 1000, 256MB SDRAM, 14.1" TFT)</p>

			<p><a href="index.html">Zurück zu Hauptseite</a></p>
								
		</div>

	</body>
</html>
Ganz perfekt ist es natuerlich noch immer nicht. Navigationen sollten zwecks Accessability mit Listen gemacht werden. Per CSS kann man die Listen so stylen das sie nicht als solche zu erkennen sind, fuegen dem Dokument aber eine bessere Struktur hinzu.

CSS fuer Liste
Code:
			#navigation ul, #navigation li {
				list-style: none;
				margin: 0;
				padding: 0;
			}

HTML fuer Liste
Code:
		<div id="navigation">
			<ul>
				<li><a href=""><img class="first" width="160" height="30" src="" alt="Home"></a></li>
				<li><a href=""><img width="160" height="30" src="" alt="Computer"></a></li>
				<li><a href=""><img width="160" height="30" src="" alt="Links"></a></li>
				<li><a href=""><img width="160" height="30" src="" alt="Kontakt"></a></li>
			</ul>
		</div>

Aendert nichts am Layout der Seite aber eine bessere, logische Dokumentstruktur.

alexsb

hmm
Avatar
Registered: Jun 2001
Location: near Graz
Posts: 1566
Zitat von Rektal
Noch besser ist natuerlich eine Variante ohne Tabelle. Tabellen sind ja primaer gedacht fuer tabellarische Daten (Excel-style eben) und nicht fuer Layout. Layoutierung ("Presentation") ist primaer die Aufgabe von CSS:

Ich habe ja schon oft gehört das man Tabellen nicht zum layouten nehmen soll, dazu ein paar Fragen:

*) Wie layoute ich sonst komplexere Strukturen (wie z.b. Oc.at)
*) Was ist eigentlich an tabellen schlecht?

erlgrey

formerly known as der~erl
Registered: Aug 2002
Location: Wien
Posts: 4429
oc.at = tables+css

was soll an tabellen schlecht sein?

alexsb

hmm
Avatar
Registered: Jun 2001
Location: near Graz
Posts: 1566
nicht an tabellen ansich sondern an tabellen als Layout instrument.
ich habs bisher immer so gemacht das das grobe layout mit tabellen gemacht wird und die details (genaue positionen, farben usw. ) mit css
das auf oc.at die threads usw tabellen sind ist eh klar, aber die Navigation z.B. ...

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4282
schlecht ist nix dran, nur waren sie dafür gedacht
aber die meisten nutzen heute schon tables für layout

MIK

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Zitat von alexsb
Zitat von Yeahman
Zern Modded NPPS
Svr Raddi

Idle: 34-36°C
Load: 37-40°C

Im Prinzip genau so mittels CSS. OC.AT besteht ja eigentlich nur aus Foren, und da ist es auch nicht falsch Tabellen zu nehmen da das ganze ja tabellarische Daten sind (threads, posts, user, etc). Navigation und restlichen content bereich einfach mit CSS layouten.

Zitat
*) Was ist eigentlich an tabellen schlecht?

Zum einen das rendern von Tabellen fuer Browser. Tabellen zu berechnen sind aufwendiger als Inhalt der mit CSS praesentiert wird. Bei einer Tabelle machts keinen Unterschied, aber wenn du anfaengst wie wild Tabellen zu verschachteln (wie auch hier ein Vorschlag in die Richtung war) das ist das a) mehr Arbeit das Layout fuer die Browser zu dimensionieren und b) wird auch dein Code unuebersichtlicher. Dann waere da noch der Punkt des ungeschraenkten Zugriffes. Menschen mit besonderen Beduerfnissen (aka. "Behinderungen") verwenden nicht unbedingt einen grafischen Browser sondern andere Geraete. Div. Geraete koennen z.B. keine Tabellen richtig darstellen oder sie praesentieren sie dem jeweiligen Benutzer falsch (z.b. Lynx kann bis heut keine Tabellen; anderen consolen browser schon. Trotzdem hat sich lynx etabliert).

Der Vorteil von CSS ist auch, das du nicht unbedingt den Inhalt des Dolumentes so anlegen musst, wie du ihn in einem grafischen Browser praesentieren willst. Z.B. kannst du ohne weiteren den DIV "navigation" nach ganz unten ruecken. Oder ganz oben. Bei einer Tabelle hast du die Flexibilitaet nicht. Du kannst nicht einfach die Navigationslinks "wegschieben".

Wenn du meine Code Beispiele nimmst, dann das CSS in ein externes Stylesheet auslagers wird schon alleine zum Bearbeiten die Seite um ein zigfaches Uebersichtlicher und du kannst dich viel mehr auf die Struktur konzentrieren. HTML ist eine "Mark up"-Language; sie gibt dem Dokument nur die Struktur. CSS ist fuer die Praesentation zustaendig.

Wenn du CSS auslagerst in eine externe Datei (macht man ja meistens) dann werden die Seiten um einiges schlanker. Du kannst den Webserver so konfigurieren das die CSS dokumente gecachet werden. Die aendern sich nicht; nur der Inhalt des "Mark up" -> schnellere Ladezeiten.

CSS ist nicht die Loesung fuer alle Probleme. Aber bei diesem Beispiel kann man sie einfach wegeliminieren (die Tabellen).
Bearbeitet von Rektal am 16.06.2003, 08:59 (was wegeliminieren? Tabellen hab ich gemeint)

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Zitat von kleinerChemiker
schlecht ist nix dran, nur waren sie dafür gedacht
aber die meisten nutzen heute schon tables für layout

MIK

Das kommt vom Netscape4. Der konnte es damals nicht besser. Da hat natuerlich jeder mit Tables fuer Layout gearbeitet. Dadurch wurden alle Tutorials mit Tabellen fuer Layout geschrieben und somit bekommen die, die NS4 noch nicht direkt erlebt haben, diese altlasten Information weitergereicht.

Das die 5er Browsergeneration CSS schon so weit unterstuetzt das man auf Tabellen fuer Layout verzichten kann, ist den wenigsten klar.

IMHO geht unter den Professionellen Designern der Trend zu CSS Layouts ueber (Prominentes Beispiel: http://www.wired.com ). Googlen nach "CSS layout" bringt einige Fruechte an den Tag.

alexsb

hmm
Avatar
Registered: Jun 2001
Location: near Graz
Posts: 1566
ok, ich verwende jetzt konkret eine Seite (index.php)
mach da eine Tabelle mit vier Zellen und includiere in die jeweiligen td's nur andere Dateien.
Damit ist alles was ich in den anderen Dateien mach schon mal fix einigeramssen richtig positioniert.
Sollte ich das anders machen?

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Zitat von alexsb
ok, ich verwende jetzt konkret eine Seite (index.php)
mach da eine Tabelle mit vier Zellen und includiere in die jeweiligen td's nur andere Dateien.
Damit ist alles was ich in den anderen Dateien mach schon mal fix einigeramssen richtig positioniert.
Sollte ich das anders machen?

Da gibts keine schwarz/weiss Antwort wie ja/nein.

Wenn du die Dinge nutzen moechtest wie sie urspruenglich gedacht waren, oder wenns dich einfach interessiert, oder wenn es eine Anforderung deiner Arbeit ist (z.B. Seiten WAI-Konform zu erstellen), dann vielleicht.


Nehmen wir OC.at. Indexseite (main.php) hat nach kurzem Ueberfleigen 24 tables bei mir; teilweise verschachtelt. Wenn da jetzt 24 mal Daten darzustellen waeren, die tabellarisch sind, wuerd ich sagen "Ok, paszt".
Da ich mit einem groben Blick aber nur 5 Bereiche sehe wo wirklich Daten tabellarisch Praesentiert werden, wuerd ich sagen da "koennte" man wegoptimieren (praktisch wahrscheinlich net wegen der Ineinandergreifenden Software usw.) und mehr in reinen Mark-Up/CSS zerlegen. Forensoftware sind aber meist so komplex das das zerlegen (nachtraeglich) nicht lustig ist. OC.AT wuerd ich nicht auf Teufel komm raus umkrempeln. Vor allem nicht im hachinein.


Anderes Beispiel: http://www.eltern-bildung.at/ . Ok, sicher nicht was der durchschnittliche OC.AT user ansurft ;) Ich wette aber fuer die meisten ists auf den ersten Blick ein klarer Fall fuer Tables. Tatsache ist das fuers Layout mit zwei Ausnahmen kein Table verwendet wird. Eine Ausnahme sind die Formulare, die andere das dortige Forum.

alexsb

hmm
Avatar
Registered: Jun 2001
Location: near Graz
Posts: 1566
ok, meine Seite ist einem Forum sehr ähnlich, sie beinhaltet auch eines, aber hauptsächlich stellt sie interaktiv Listen von Filmen zur Verfügung. Villeicht überleg ichs mir noc und werd ein wenig umbaun, ich hab bisher eh nur das rechenwerk, ohen eine einzige Farbe oder ein einziges Bild
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz