1Danke
ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
353
353
EMPFEHLEN
-
Ich versuche krampfhaft in einer Tabelle mit Untertabellen passende Höhen zu berechnen.
Ich kann nicht mal genau sagen, woran es liegt, aber abhängig vom verwendeten Browser und der Hintergrundfarbe bekomme ich immer andere Ergebnisse.
Firefox ist noch relativ einfach zu handhaben, aber im IE macht es sogar Unterschiede, ob in einer Zelle etwas Sichtbares drin steht oder nichts oder nur .
Ich möchte einfach nur 2 Tabellen mit jeweils nur einer Spalte, deren Höhe voneinander abhängig ist.
Tabelle 1:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
$zeilen = x; // ein durch 3 teilbarer Wert zwischen 6 und 999 print <<<END <table> END; for($i = 0; $i < $zeilen; $i++) { print <<<END <tr> <td height="25" border="1"> Irgendwas </td> </tr> END; } print <<<END </table> END;
Tabelle 2:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$zeilen = $zeilen / 3; $height = ?; // hier liegt das Problem print <<<END <table> END; for($i = 0; $i < $zeilen; $i++) { print <<<END <tr> <td height="$height" border="1"> </td> </tr> END; } print <<<END </table> END;
Eine Zeile in Tabelle 2 soll inkl. Rahmen genauso hoch sein wie 3 Zeilen in Tabelle 1 inkl. Rahmen.
Insgesamt sollen beide Tabellen inkl. aller Rahmen genau gleich hoch sein.
Offensichtlich passt $height="75" nicht, weil in Tabelle 1 zwischen jeweils 3 Zellen 2 Rahmen mehr sind als in Tabelle 2.
Ich habe es einfach ausprobiert und nachgemessen, bei border="1" komme ich auf height="79".
Das passt auch fast immer, allerdings haben die Zellen je nach Browser, Hintergrundfarbe und Inhalt der Zelle immer andere Höhe.
In Tabelle 1 irgendwas zwischen 23px plus Rahmen und 27px plus Rahmen.
In Tabelle 2 irgendwas zwischen 77px plus Rahmen und 81px plus Rahmen.
Es ist mir egal wie ich es anstellen muss, CSS oder JavaScript oder sonstwas an umständlicher Berechnung in PHP, ich brauche nur eine Lösung, die in Firefox genauso passt wie im IE, egal ob in den Zellen etwas drin steht oder nicht.
Hat jemand eine Idee?
-
Ich würde mal anders ran gehen:
Wieso brauchst Du überhaupt Tabellen?
Scheinbar besteht jede Tabelle ja nur aus einzelnen Spalten - das macht keinen Sinn für tabellarische Daten. Wieso verwendest Du kein <ul> z.B.? Was steht eigentlich in den Spalten als Inhalt drinne?
Und: was willst Du rein grafisch erreichen?
-
Die Tabellen sind Untertabellen einer Haupttabelle und das sind effektiv nicht nur 2, sondern bis zu 11 Untertabellen.
Die Haupttabelle enthält bis zu 11 Spalten a 3 Zeilen, wobei jeweils in der dritten Zeile die entsprechende Untertabelle steht.
Der Inhalt einzelner Zellen ist sehr kurz, max 15 Zeichen.
Erreichen will ich damit eine Gesamttabelle, wo (mit 2 Zeilen Überschrift) von links nach rechts jeweils 3 Zeilen zu einer zusammengefasst werden, wobei die Gesamttabelle einen Rahmen aussen drumrum hat, die Untertabellen aber nur Rahmen um alle Zellen.
Grafisch sollten natürlich von rechts aus gesehen die Zellen nicht nur genauso hoch sein, sondern auch auf derselben Höhe stehen, wie die zugehörigen 3 Zellen links davon.
Als Tabelle habe ich das gemacht, weil ich mich damit am besten auskenne, insbesondere mit Hintergründen, von einfacher Farbe bis Grafik.
Einige Zellen haben als Inhalt eine variable Hintergrundgrafik, die ich mit CSS passend zoome, diese Zellen müssen klickbar sein und auch noch auf Mouse Events reagieren, um z.B. die Hintergrundgrafik zu wechseln oder ein Stück JavaScript auszuführen.
-
27.11.11 18:41 #4
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Ich bin mir jetzt nicht sicher ob es das ist was du suchst, aber die Tabellen sind auf jeden Fall immer gleich hoch:
str_repeat ist nur drin damit in der zweiten Tabelle mehr/etwas anderes steht als in der ersten!PHP-Code:<?php $zeilen = 6; ?>
<table border="1" cellpadding="5" cellspacing="0" summary="" style="height: 25;">
<tr>
<td>
<table border="1" cellpadding="0" cellspacing="0" summary="" style="height:100%;">
<?php
for ($a = 1; $a <= $zeilen; $a++) {
$hoehe = $a < $zeilen ? '25': '100%';
echo "<tr><td height='$hoehe' width='100'>$a</td></tr>\n";
}
?>
</table>
</td>
<td>
<table border="1" cellpadding="0" cellspacing="0" summary="" style="height:100%;">
<?php
for ($a = 1; $a <= $zeilen; $a++) {
$hoehe = $a < $zeilen ? '25': '100%';
echo "<tr><td height='$hoehe' width='100'>" .str_repeat("XXX XX X ", $a) ."</td></tr>\n";
}
?>
</table>
</td>
</tr>
</table>Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Nein, das passt leider nicht.
Die Untertabellen sind zwar gleich hoch, wegen style="height:100%;"
aber die Untertabellen haben keinen Rahmen, nur die Zellen in den Untertabellen haben einen Rahmen.
Der Effekt von deinem Code ist dann, dass die Zeilen in der zweiten Tabelle vertikal zentriert werden, aber ganz oben und ganz unten ein Loch bleibt.
Darum muss in der zweiten Untertabelle etwa stehen:
$hoehe = 75 + 2x Rahmen
Nachdem FF und IE aber aus 25x Höhe irgendwas (verschiedenes) zwischen 23px und 27px plus Rahmen machen passt auch 75 plus 2x Rahmen nicht, sondern kann irgendwas zwischen
69px und 81px plus 2x Rahmen sein.
-
28.11.11 06:43 #6
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Also ich verstehe nur Bahnhof....aber die Untertabellen haben keinen Rahmen, nur die Zellen in den Untertabellen haben einen Rahmen...
Kannst du zum besseren Verständnis vielleicht mal ein Bild machen und hier einstellen wo man dann erkennen kann wie die Tabelle(n) aussehen soll.
Die Umrandung die wirklich dargestellt werden soll machst du dann mit durchgehenden Linien, die Linien die nur dazu da sind um Tabellen/Zellen sichtbar zu machen, machst du gestrichelt.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ich versuchs mal.
Angehängt habe ich jetzt beides, links was IE draus macht und rechts was FF draus macht.
Da sieht man auf den ersten Blick schon, dass FF das Ganze insgesamt kleiner darstellt, aber das ist kein Problem.
Rot eingerahmt habe ich die beiden Untertabellen, und da liegt das Problem, denn da macht IE die zweite Tabelle zu kurz, während FF es richtig macht.
Code ist in beiden Fällen identisch, und weils einfacher zu überschauen ist, mal ohne PHP sondern vom tatsächlichen HTML Quelltext:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
<body bgcolor="#406090"> <table width="300" align="center" border="1"> <! Kopfzeile > <tr> <td width="150" align="center" bgcolor="#486ca3"> </td> <td width="150" align="center" bgcolor="#486ca3"> </td> </tr> <! Zeile für Untertabelle > <tr> <td> <! Untertabelle links > <table border="1" width="150"> <tr> <td width="150" valign="middle" height="25"> </td> </tr> <tr> <td width="150" valign="middle" height="25"> </td> </tr> <tr> <td width="150" valign="middle" height="25"> </td> </tr> <tr> <td width="150" valign="middle" height="25"> </td> </tr> <tr> <td width="150" valign="middle" height="25"> </td> </tr> <tr> <td width="150" valign="middle" height="25"> </td> </tr> </table> </td> <td> <! Untertabelle rechts > <table border="1" width="150"> <tr> <td width="150" valign="middle" height="79"> </td> </tr> <tr> <td width="150" valign="middle" height="79"> </td> </tr> </table> </td> </tr> </table> </body>
-
28.11.11 13:48 #8
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Komisch bei mir wird es im IE 8, Opera 11.52 und im FF 8 jeweils korrekt dargestellt! Sowohl dein Code als auch meiner.
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ich verstehe es ja auch nicht.
Ich habe es probiert mit FF8, IE8 und IE9, unter 32bit XP und 64bit Win7.
Aus irgendeinem Grunde macht der IE bei mir die height um 2px grösser als angegeben, aus height="25" wird eine tatsächliche Höhe von 27px plus Rahmen, FF macht 23px plus Rahmen.
Vielleicht kann man das Ganze anders angehen?
Wie bringt man die Browser dazu für height="25" auch wirklich genau 25px Höhe anzuzeigen, und nicht nur so ungefähr?
-
28.11.11 15:10 #10
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Mir fällt zwar so nichts passendes ein was es sein könnte, aber hast du vielleicht irgendwo auf der Seite eine CSS Anweisung die dafür verantwortlich sein kann.
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ich habs gefunden.
Es ist nicht eine CSS Anweisung zu viel, sondern ein paar zu wenig.
Die Browser verwenden verschiedene defaults für spacing, padding, Schriftart und -grösse.
Gibt man das nicht alles ausdrücklich an, wird im IE wird die Summe aus cellspacing, cellpadding und Schrift höher als 23px, darum macht er die Zellen grösser.
Das mag mit Desktop-Einstellungen zusammen hängen, so dass es bei dir geht und bei mir nicht, wie auch immer, kaum habe ich das alles eingestellt, passt es auch im IE.
Vielen Dank für deine Mühe, du hast mich zumindest auf die richtige Idee gebracht.
Ähnliche Themen
-
[Internet Explorer] DIV height 100% in TABLE->TD
Von Kalstone im Forum HTML & XHTMLAntworten: 5Letzter Beitrag: 15.09.10, 22:41 -
Table height abhängig von Datensatzmenge
Von Tribalman im Forum PHPAntworten: 15Letzter Beitrag: 27.10.04, 09:46 -
table height Tag in Opera?
Von zeromancer im Forum HTML & XHTMLAntworten: 11Letzter Beitrag: 25.06.04, 13:58 -
W3c height Validate Table
Von mageDSA im Forum HTML & XHTMLAntworten: 2Letzter Beitrag: 03.09.03, 16:00 -
table -> height
Von TiMbO2k im Forum HTML & XHTMLAntworten: 5Letzter Beitrag: 14.11.02, 12:18





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren