Layoutprobleme

Hallo Experten,
also ich habe folegendes Problem: ich bastel gerade an einem layout. es gibt einen div container mit hintergrundfarbe (WRAP) in dem alle anderen objekte positioniert sind. unteranderem ist da auch ein content div (CONTENT) drinnen, welcher auch eine hintergrundfarbe hat. Ich möchte, dass der WRAP und der CONTENT immer - auch bei wenig text - eine mindesthöhe haben, bei mehr text sich jedoch ihre höhe an der menge des textes orientieren. auf das minheight tag möchte ich allerdings verzichten, da es erst ab dem ie6.0 interpretiert werden kann…

Gruß und danke schonmal,

Moni

Hi Moni,

wieso nicht einfach height:0.1em ?

lg
Julian

Hallo Moni,

auf das minheight tag möchte ich allerdings
verzichten, da es erst ab dem ie6.0 interpretiert werden
kann…

ohne einen der vielen min-height-Hacks wirst Du das Problem nicht lösen können. Ich benutze diesen hier:

div {
height:auto !important;
height:500px;
min-height:500px;
}

Der IE5 interpretiert height wie min-height (bzw. überdehnt eine umgebende Box trotz absoluter Höhen-Angabe, wenn der Inhalt nicht hineinpasst) und für alle anderen ist eben die min-height-Angabe da. Die erste Anweisung ist für Firefox und Opera und notwendig, damit die beiden nicht die absolute height-Angabe interpretieren.

Schöne Grüße
Yasmin

So so, Du möchtest also min-height nicht verwenden, weil es erst ab dem IE 6 unterstützt wird …

Oh ich hatte ja vergessen, dass es nur diesen einen Browser gibt. Der Internet Explorer ist der einzige Browser der je eine Rolle gespielt hat, eine Rolle spielt und jemals eine Rolle spielen wird. FireFox, Opera, Konqueror, Safari usw. muss man ja nicht in seine Entscheidungen mit einbeziehen, auch wenn sie viel fortschritllicher sind. Bloß keinen Schritt vorwärts machen und immer schön brav nach einem Browser richten!

Ich würde sagen wir nehmen bei der Gelegenheit auch gleich alle Verkehrszeichen von der Straße, weil Blinde die ohnehin nicht sehen können. Und wenn wir schon mal dabei sind, entfernen wir auch mal schnell alle Straßenlaternen, weil Blinde damit auch nichts anfangen können …

Gruß Marcus

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Experten,

auf das minheight tag möchte ich allerdings

verzichten, da es erst ab dem ie6.0 interpretiert werden
kann…

Gruß und danke schonmal,

Moni

da würde ich mir keine Gedanken darum machen,der ie6 ist von 2000!
alles was davor ist Steinzeit! oder willst du nicht ganz auf alles verzichten und deine Seiten so gestalten, das sie auch unter Mosaic laufen (der ist nur doppelt so alt wie der ie6)?
gruß markus

Hi Moni,

Schlimm genug, dass man für IE6 noch Seiten anpassen muss (schlimm ist eigentlich, dass es nicht reicht, sich an die Standards zu halten, aber andere Geschichte) - aber MS-Explorer vor Version 6 und Netscape-Dinosaurier zu unterstützen ist definitiv zuviel des Guten. Macht kaum wer, brauchst Du auch nicht. Wer mit einem Dinosaurier surft, weiß, worauf er sich einlässt. Und die Nutzer moderner Browser sind überaus updatefreudig - die bekommen nicht nur beim Betriebsystemwechsel einen neuen Browser, zumal sie sich der Anwendung bewusst sind und mittlerweile fast jeder eine Autoupdate-Funktion hat.

da es erst ab dem ie6.0 interpretiert werden
kann…

IE 6 unterstützt min-height übrigens nicht, Workarounds wurden Dir ja bereits genannt.

Alternativ - aber eine unschöne Lösung - wäre ein floatendes Element mit der Höhe Deiner Mindesthöhe und einer Breite von 1px ohne Hintergrundfarbe vor dem Inhalt und einem folgenden clearenden Div unterhalb des Inhalts innerhalb des Container-Elements. Das ginge - muss aber nicht sein, ist von der Semantik nicht schön und der Nutzen mehr als fragwürdig.

Ciao
Rudy

Hallo Marcus,
also ich hege irgendwie die Vermutung, dass du den Internetexplorer nicht magst? Warum?
Es ist so, dass immernoch sehr viele Leute ihn benutzen, und ob er jetzt sch… ist oder nicht, ich muss ihn berücksichtigen, da geht kein Weg dran vorbei. Ich möchte die Seiten die ich erstelle für möglichst viele Leute zugänglich machen.
Gruß
Moni

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rudy,
Du bist also der Meinung, dass Optimierung für IE6 übertrieben ist? Wir sind eine Webeagentur und möchten es dem Kunden natürlich Recht machen. Ich kenne mich leider mit diesem Thema nicht so gut aus, da ich einen Mac habe und deshalb sowieso eine uralte Version des IE.
Die Idee mit dem „Stetcher“ hatte ich auch. Aber leider funktioniert es nicht. Obwohl alle drei Elemente, also der „drumrum“-div, der Text-div und der „Stretch“-div eine relativ-position haben. Sobald ich einem der Elemente ein float gebe, wird dass „drumrum“-div nicht mehr von seinen inneren divs ausgedehnt…
Vielleicht weißt du woran das liegt?

Gruß
Moni

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke für die Antwort, ich als Mac-Fraktion kenne mich mit dem IE überhaupt nicht aus.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Marcus,
also ich hege irgendwie die Vermutung, dass du den
Internetexplorer nicht magst? Warum?

Genau genommen nicht den Internetexplorer selbst, sondern diejenigen die ihn programmiert haben (Microsoft). Die haben es nämlich bis heute nicht geschafft den IE W3C-konform zu bekommen, und das obwohl sie Mitglied des W3C sind und die Normen mit verabschieden! Das muss man sich mal vorstellen!

Es ist so, dass immernoch sehr viele Leute ihn benutzen, und
ob er jetzt sch… ist oder nicht, ich muss ihn
berücksichtigen, da geht kein Weg dran vorbei.

Das sehe ich genau so. Aber warum soll dann auf min-height verzichtet werden? Wenn der IE eine CSS-Formatierung einfach ignoriert, bedeutet das noch lange nicht, dass andere Browser davon nicht profitieren können.

Ich möchte die
Seiten die ich erstelle für möglichst viele Leute zugänglich
machen.

Genau das meine ich die ganze Zeit über. Der IE ist nicht das Maß aller Dinge, auch wenn Bill Gates es gerne so hätte. Wer seine Seiten benutzerfreundlich machen will, sollte sich vor allem und zuerst an standardkonformen Browsern orientieren. Danach kann man dem IE immernoch seine Extrawurst zukommen lassen.

Gruß
Moni

Gruß Marcus

Hi Moni,

Du bist also der Meinung, dass Optimierung für IE6 übertrieben
ist?

Das habe ich nicht gesagt. Ich finde es schlimm, durchdachte Standards für eine fehlerhafte Software (=IE, auch neue Versionen und Urgesteine) so hinzubiegen, dass diese sie versteht. Beim IE6 ist es aufgrund des unverschämten Verbreitungsgrades ein notwendiges Übel, wenn man dies geschäftlich macht. Alles vor IE6 ist vernachlässigbar… deshalb würde ich immer noch zur CSS-Lösung raten.

Wir sind eine Webeagentur und möchten es dem Kunden
natürlich Recht machen. Ich kenne mich leider mit diesem Thema
nicht so gut aus, da ich einen Mac habe und deshalb sowieso
eine uralte Version des IE.

Der IE Mac wird nicht mehr weiterentwickelt und ist auf uraltem Stand stehen geblieben. Zum Testen ist der IE Mac völlig ungeeignet. Du musstsolltest neben standardkonformen Browsern (Opera 9+, Camino Mac, und den weitgehend konformen Firefox 2+, optional auch Safari) die Albträume der Webdesigner IE6 und IE7 PC in Betracht ziehen - und Du kannst auf PC auch beide zugleich nutzen - zuerst auf IE7 updaten und dann IE6 Standalone http://browsers.evolt.org/download.php?/ie/32bit/sta… in einen Ordner entpacken und starten.

Die Idee mit dem „Stetcher“ hatte ich auch. Aber leider
funktioniert es nicht. Obwohl alle drei Elemente, also der
„drumrum“-div, der Text-div und der „Stretch“-div eine
relativ-position haben. Sobald ich einem der Elemente ein
float gebe, wird dass „drumrum“-div nicht mehr von seinen
inneren divs ausgedehnt…

Das Container-DIV darf nicht von floatenden Elementen ausgedehnt werden, außer es folgt ein clearendes Element. Der IE6 hat einen Bug, sodass er den Container ohne clearendes Element nach dem Inhalt ausdehnt, wenn man dem Container eine fixe Breite gibt. Siehe http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv…

Vielleicht weißt du woran das liegt?

Ohne den Gesamtkontext zu kennen kann ich nur raten… es fehlt das clearende Element? Ich kann Dir ein Beispiel machen:

Min-Height Workaround
* { margin:0; padding:0 }
body { text-align:center; background:#fafafa; }
div#all { width:950px; margin:0 auto; border:1px solid;}
p { font-size:16px; padding-bottom:1em; }
div.container { background:#3DD5FF; margin:20px; }
div.stretch { width:1px; height:150px; float:left; margin-left:-1px;}
div.container-footer { clear:left; }

Lorem ipsum …

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent arcu ante,
ornare in, tristique eu, porta quis, erat. Quisque nulla massa, elementum eu,
bibendum id, bibendum eget, purus. Integer non ipsum. Cras sollicitudin faucibus
nulla. Donec lectus nibh, hendrerit nec, ultrices nec, porttitor ultricies, leo.
Morbi placerat, dui eu auctor lobortis, mi sapien consequat ligula, sit amet
porttitor massa dolor fringilla justo. Etiam risus ante, tempor in, lacinia
nec, venenatis non, mi. Morbi varius turpis quis felis. Nam interdum vehicula

nulla. Mauris semper enim convallis elit. Quisque feugiat pharetra libero. Ut mi
nisl, adipiscing ut, pulvinar nec, ullamcorper eu, mauris. Vestibulum consequat
purus ut risus. In hac habitasse platea dictumst. Integer aliquam, dui vitae
fringilla tristique, erat dolor ullamcorper odio, eget blandit pede nisl vitae
erat. Suspendisse tellus sem, varius vitae, bibendum facilisis, cursus quis, eros.
Donec pretium mi eu elit. Duis at enim. Sed nulla.

Die Container-Elemente sind immer mindestens 100px hoch, weil div.stretch vor dem Inhalt links floatet und 100px hoch ist - dem Inhalt (=Text) folgt der div.container-footer, welcher mit clear:left den Container über alle links floatenden Elemente aufspannt (zwingt also folgende Elemente unterhalb der links floatenden Elemente). Mit einem negativen margin-left von der Größe der Breite von div.stretch gibt es auch keine unschöne Verschiebung des Inhalts 1px nach rechts.

Bye
Rudy