Christian Zill: Lego mit CSS: Der "Flipped-L-Float" mit Fliesstext um Ecken

Beitrag lesen

Liebes Forum,

Ich habe ein CSS-Layout-Problem. Ich habe 3 ineinander verschachtelte Float-DIVs in "L"-Form:

AAA  BBBB  CCCCCCCC
AAA  BBBB  CCCCCCCC
AAA  BBBB  CCCCCCCC
AAA  BBBB  CCCCCCCC
     BBBB  CCCCCCCC
BBBBBBBBB  CCCCCCCC
BBBBBBBBB  CCCCCCCC
BBBBBBBBB  CCCCCCCC
           CCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC

ich möchte C um B um A fliessen lassen. In A, B und C ist Fliesstext im Blocksatz, also ":justified". Getestet in Opera, FF, Mozilla und IE6.
Alles OK, ausser IE. Ich versuche das Problem zu beschreiben:

Das Layout ist "liquid", ausser A alles in Prozent der Screenbreite, ich hoffe man kann schon erkennen weswegen der Name des Themas: "L-Flip-Float"

Es kommen jetzt 2 Screenshots, beide OK in ALLEN von mir getesteten Browsern. Ich hoffe ich krieg das jetzt hin mit den Bildern hier, evtl. die URL eintippen, also zweimal, in verschiedenen Fenstergrössen/-breiten:

lego_ok.snap

Wenn man jetzt das erste Bild, also das Fenster;-),  schrumpft, sollen 2 Sachen passieren:

1. C(gelbes L) und B(rotes L) sollen in der Breite schmaler werden, A(blauer Kasten) hat eine festgelegte Pixelbreite.
2. Und ausserdem, weder B(rot) noch C(gelb) sollen schmaler werden können als der blaue A-Kasten.

Das funktioniert auch so, also richtig, in allen Testkandidaten. Innerhalb des roten und des gelben "L"s marschiert der Fliesstext in geordnetem Blocksatz korrekt um die Ecken. Und wenn man das Browserfenster verschmälert ergibt sich, jedenfalls bis zu einer gewissen Minimal-Breite, auch immer dasselbe GESUNDE Bild, und soweit in allen Browsern auch noch identisch:

IE_lego_ok.snap

Leider, jetzt,  kommt doch noch ein Problem:-( Wenn ich das Fenster noch ein bischen mehr verschmälere, bleiben die gewünschten Minimalbreiten immer erhalten, nur nicht im IE. Ich hoffe man kann das Bild sehen:

IE_lego_notok.snap

Obwohl das rote "L-Float" noch genauso breit ist wie es soll, so breit wie die blaue A-Box, auch im IE, das "Null eins zwei drei..." wird trotzdem schmaler. Und zwar NUR im IE. Ich will aber dass es immer mindestens so breit bleibt wie die blaue A-Box obendrüber.
Das ist das Problem.

Ich habe viel, und jetzt  tagelang, probiert, und die bunten Streifen geben Zeugnis. Ich weiss nicht mehr weiter. Ich ärgere mich nur noch ein bischen. Ich bin matt. Was ich auch probiert habe: Im IE wird der rote Fliesstext zu früh umgebrochen, und NUR dort anscheinend.

Bevor ich noch den Quelltext rüberreiche, sei es gestattet, dass ich meine Fragen formuliere:

1. Funktioniert mein Ansatz wenigsten, wenn schon nicht in IE6, denn doch in IE7?

2. Weiss jd. weiter, welche IE-Bugs sich hier evtl. bemerkbar machen könnten?

3. Gibt es überhaupt Hoffnung auf eine Lösung im IE6?  Wenn man meine DIVs anders verschachtelt vielleicht? Oder im CSS? Oder egal was, wenigstens so ähnlich wie ein L? Und zuletzt vielleicht: Könnte man wenigstens sagen, dass es für den IE6 erwiesenermassen keine Lösung gibt, was man eben nicht ändern kann?

So, jetzt der Quelltext. Erstmal ein Link, wo man den "L-Flip-Float" in Aktion testen kann, nicht im Vollbildfenster ;-), wenn der Link nicht geht evtl. tippen:
http://zinux.de/selfhtml/css_lego/myflow.html

Hier gibt's den QUELLCODE eben verlinkter Datei "myflow.html" farbig formatiert:
http://zinux.de/selfhtml/css_lego/myflow_src.html

Falls der Link nicht klappt derselbe Quelltext nochmal, ein zweites Mal,  gleich nach dem Scherenstrich, und nach meinem Danke für die renovierte Texteingabe( Schön! Auffällig && trotzdem nichtstörend, optimal gelungen jetzt, m.E. )

Also, viele freundliche Abschiedsgrüsse aus Kaiserslautern,

Christian

------8< ------------8< -------------8< ---------------------8< ------------8< -------------8< ---------------

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
  
<head>  
<meta http-equiv="content-type" content="text/html; charset=utf-8">  
<title>CSS-Lego: Der "L-Flip-Float"</title>  
<style type="text/css">  
  
    /*  
    Der "L-Flip-Float"  
  
     AAA-BBBB-CCCCCCCC  
     AAA-BBBB-CCCCCCCC  
     AAA-BBBB-CCCCCCCC  
     AAA-BBBB-CCCCCCCC  
     BBBBBBBB-CCCCCCCC  
     BBBBBBBB-CCCCCCCC  
     BBBBBBBB-CCCCCCCC  
     CCCCCCCCCCCCCCCCC  
     CCCCCCCCCCCCCCCCC  
     CCCCCCCCCCCCCCCCC  
  
    */  
  
    html{ width:100%; height:100%; margin:0px; padding:0px; border:0px; }  
    body{ width:100%; height:100%; margin:0px; padding:0px; border:0px;font-size:14px; font-family:'monospaced Century Gothic';  
       vertical-align:baseline; background:transparent;  
        }  
    div{  
     border:0px solid #009900;  
     text-align:justify;  
     font-weight:bold;  
     margin:0px; padding:0px; border:0px;  
    }  
    .inner{ width:100% }  
  
    .Double_flippedL_Float div {  
     /*background-image:url('./millimeter.png'); */  
     font-weight:bold; font-size:18px; line-height:20px;  
    }  
  
</style>  
</head>  
<!-- ================================================================================================================================  -->  
<body  style="margin:0px; background:black; width:98%">  
  
    <div class="Double_flippedL_Float" style="background:white; min-width:150px; overflow:visible; width:100%;">  
  
        <div style="float:left; width:50%; text-align:justify; background-color:green; min-width:150px; ">  
  
         <div class="inner" style="min-width:150px;text-align:right;position:relative; ">  
  
          <div style="float:left;  padding-right:0px; width:150px; min-width:150px; max-width:150px;">  
                    <div style="background-color:#9cceff; /*-- B-L-U-E --*/ color:#000066; text-align:left;  
         min-width:150px; width:150px; max-width:150px; overflow:hidden;  
        ">  
         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 6 7 8 9  
         <br><img src="./px.gif" width="1" height="1" alt="" style="clear:left;height:0px; overflow:hidden;  min-width:150px; /*display:none;*/  
        "></div>  
          </div>  
  
          <div id="red" style="background-color:#f78ca5; /*-- R-E-D --*/ color:#990000;  
        min-width:150px; display:block;  
        /*--- 4IEonly: ---*/ /* margin-left:-150px; padding-left:150px; overflow:hidden; */  
       ">  
  
        <span style="background:#d76c85; border-right:1px solid red; border-top:1px solid #993333;">Null eins zwei drei vier fuenf sechs sieben acht neun null eins zwei drei vier fuenf sechs sieben acht neun zehn  
        0123456789012</span>  
        <!--  HIER TRAT DAS PROBLEM GERADE EBEN IN ERSCHEINUNG ,  IE<7 KANN KEINE MIN-WIDTH,  
        Die rote Box bleibt zwar so breit wie der blaue Kasten, nur die Inline-Boxes schrumpfen ( o.a. 50% entsprechend? )  
        -->  
  
        <!-- Jetzt, hilft aber nicht, eine Box breit wie blaue Box( 150px ), + 1 Break( wg. justify ), trotzdem: KEINE Mindestbreite d. roten Kasteninhalts. -->  
        <div style="height:10px; width:150px; overflow:hidden; background:red;  
         "><img src="./px.gif" width="150" height="1" alt="" style="background:red; /*display:none;*/  
         "><br style="font-size:1px; line-height:1px;"><!--div style="height:1px; display:none;  
          overflow:hidden; width:150px;">01234567890123  
        --></div>  
       </div>  
          <div style="clear:left; background-color:#0033ff; /*-- C-Y-A-N  UNVISIBLE --*/ width:100%; color:cyan;  
        line-height:5px; font-size:5px; overflow:visible; height:10px; width:100%; text-align:right;  
       "><!-- padding-left=Breite d. linken Rands von Blau, dto. right  
  
       --><img src="./px.gif" width="150" height="10" alt="" style="clear:left; /*--  Y-E-L-L-O-W  --*/height:5px; background:yellow;  
         /*overflow:hidden; *//*display:none; */  
         min-width:150px; position:relative; right:0px;  
        "><!-- lastrow_of_red, gruener Balken  
  
       --></div>  
  
       Abcdefghij  
  
         </div>  
  
        </div>  
        <div style="background-color:#ffef9c; /*yellow*/ color:#cc6600;  display:block;overflow:visble; margin-left:0px;  
     "><!-- padding-left=Breite d. linken Rands von Gelb, dto. right -->  
  
            A AA 01234 56789  01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789  
      01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789 01234 56789  ZZ Z  
      <!-- img src="./px.gif" width="800" height="10" alt="" style="background:red;" -->  
  
        </div>  
        <div style="background-color:yellow; clear:both;">  
      Lastrow_yellow  
        </div>  
  
    </div>  
  
</body></html>